47 puan yazan xguru 2022-02-28 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Bazen kullanıcı başka bir sayfaya geçtiğinde veya bir form gönderdiğinde log bırakmak isteyebilirsiniz
  • Tıklama olayının içine fetch koymak, isteğin kesinlikle gönderileceğini garanti etmez
  • Bu yüzden fetch yaptıktan sonra window.location atayarak yönlendirmeyi deneyebilirsiniz, ancak bu da yine garanti sağlamaz
    • Çünkü XHR asenkron ve non-blocking çalışır
  • fetchi Promise ile await ederek beklemek mümkün, ancak bunun da dezavantajları vardır
    • İşlem yavaşladığı için kullanıcı deneyimi kötüleşir
    • Beklendiği kadar güvenilir değildir. Tarayıcı sekmesini kapatmak gibi durumlar ele alınamaz
  • Tarayıcıya HTTP isteğini korumasını söyleyen çeşitli seçenekler vardır
    • fetchte keepalive bayrağı kullanılırsa, sayfa sonlandırılsa bile ilgili istek sürdürülür
    • Navigator.sendBeacon() gibi daha basit bir fonksiyon vardır
    • Tarayıcılar a etiketinde ping özelliğini de destekler (yalnızca bağlantılarda kullanılabilmesi dezavantajdır, Firefox varsayılan olarak desteklemez)
  • Peki hangisini kullanmak gerekir?
    • Mümkünse fetch() + keepalive
      • Tarayıcıların %80'i destekler
      • Özel header gönderilebilir
      • GET isteğiyle de kullanılabilir
      • Eski tarayıcılar desteklenir
    • sendBeacon() şu durumlarda iyidir
      • Tarayıcıların %96'sı destekler
      • Çok fazla özelleştirme gerekmiyorsa
      • Temiz ve zarif bir API tercih ediliyorsa
      • Tarayıcının diğer öncelikli istekleriyle rekabete girmesi istenmiyorsa

Henüz yorum yok.

Henüz yorum yok.