Apollo-link: Tambahkan opsi batas waktu untuk apollo-link-http

Dibuat pada 20 Feb 2019  ·  7Komentar  ·  Sumber: apollographql/apollo-link

Akan sangat menyenangkan untuk dapat memasukkan nilai batas waktu milidetik dalam opsi apollo-link-http.

Bahkan jika ini tidak dapat membatalkan pengambilan yang sedang berlangsung saat ini, itu akan sangat berguna sehingga setiap orang tidak perlu menggulirkan solusi mereka sendiri:

https://stackoverflow.com/questions/40837676/apolloclient-timeout-best-option
https://stackoverflow.com/questions/47198402/how-to-set-a-timeout-on-a-request-with-apollo-client

feature

Komentar yang paling membantu

Halo Tim Apollo, Sangat berguna untuk memiliki opsi batas waktu yang didukung secara default dalam implementasi klien apollo graphql. Karena ini terkait erat dengan permintaan klien, adalah wajar untuk meminta batas waktu.
Apakah Anda sudah merencanakan fitur ini? Apa pendirian Anda saat ini atas permintaan ini?

Menanti untuk mendengarnya darimu.

Terima kasih
Aravind

Semua 7 komentar

Ya, seharusnya mungkin untuk membungkus pengambilan dan mengatur waktu permintaan jika diperlukan.

Jika orang bergantung pada versi non-waktu habis, kami perlu memberikan pilihan untuk tidak melakukan perilaku ini.

Kita dapat menggunakan abortConttoller untuk pembatalan itu sendiri.

Pikiran? @hwillson

@dshook @JoviDeCroock Saya pikir yang Anda inginkan adalah tautan batas waktu. Agaknya Anda ingin membatasi jumlah waktu yang mungkin dimiliki penelepon untuk menunggu respons, dan hanya mengembalikan kesalahan jika tidak ada respons yang kembali pada waktu itu, benar? Jika demikian, memasukkannya ke dalam tautan http itu sendiri tidak akan membuatnya dapat dikomposisi dengan tautan lain. Kueri Anda juga bisa menunggu atau macet di tautan lain, itu tidak harus berupa tautan coba lagi. Itu bisa di apollo-link-retry, apollo-link-serialize, apollo-link-queue, dll. Untuk menjamin batas waktu tertentu, yang Anda perlukan adalah tautan batas waktu yang berada di bagian paling atas tumpukan, dan waktu permintaan keluar yang memakan waktu terlalu lama (membatalkannya dan mengembalikan kesalahan), di mana pun di tumpukan permintaan tersebut tertunda.

Seperti yang Anda tunjukkan, membatalkan permintaan setelah waktu habis tidak menjamin bahwa server tidak melihatnya, jadi berhati-hatilah dengan mutasi yang tidak idempoten.

PS: Sepertinya seseorang sudah membuat tautan batas waktu (apollo-link-timeout). Sayangnya itu tidak terlalu fleksibel dan merusak abstraksi tautan (mis. menjangkau tautan ambil untuk membatalkan permintaan dan mengembalikan timeoutRef yang dapat dipanggil dari mana saja), tampaknya tidak diuji dengan baik, memiliki beberapa pertanyaan defaults (batas waktu 15 detik, bukan tanpa batas waktu) dan tidak terlalu fleksibel (misalnya batas waktu tidak dapat bergantung pada variabel kueri), tetapi mungkin akan berhasil untuk Anda.

Saya setuju ini akan luar biasa tapi saya mengerti Fetch API tidak memiliki mekanisme batas waktu jadi saya tidak yakin apakah Fetch digunakan di bawah tenda atau jika hanya janji biasa yang digunakan.

apollo-link-timeout tidak fleksibel seperti yang disebutkan @helper . Saya pikir nilai timeout harus dinamis. Bagaimana kita bisa menangani timeout sebagai cara terbaik? 🤣.

_ contoh pertanyaan _

<Query
  query={FETCH_QUERY}
  context={{ timeout: 5000 }}
>...</Query>

Hanya ingin menindaklanjuti di sini, apa solusi saat ini yang dapat diterima? Dan itu mewakili skenario dunia nyata dan sepertinya permintaan yang adil untuk batas waktu.

Halo Tim Apollo, Sangat berguna untuk memiliki opsi batas waktu yang didukung secara default dalam implementasi klien apollo graphql. Karena ini terkait erat dengan permintaan klien, adalah wajar untuk meminta batas waktu.
Apakah Anda sudah merencanakan fitur ini? Apa pendirian Anda saat ini atas permintaan ini?

Menanti untuk mendengarnya darimu.

Terima kasih
Aravind

Apakah fitur ini masih on track? Kami benar-benar dapat mengambil manfaat dari opsi batas waktu jika tersedia.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat