fetch


使用 Fetch

Fetch API 提供了一個 JavaScript 接口,用於訪問和操縱 HTTP 管道的一些具體部分,例如請求和響應。它還提供了一個全局 fetch() 方法,該方法提供了一種簡單,合理的方式來跨網絡異步獲取資源。

這種功能以前是使用 XMLHttpRequest 實現的。Fetch 提供了一個更理想的替代方案,可以很容易地被其他技術使用,例如  Service Workers (en-US)。Fetch 還提供了專門的邏輯空間來定義其他與 HTTP 相關的概念,例如 CORS 和 HTTP 的擴展。

請注意,fetch 規范與 jQuery.ajax() 主要有三種方式的不同:

  • 當接收到一個代表錯誤的 HTTP 狀態碼時,從 fetch() 返回的 Promise 不會被標記為 reject, 即使響應的 HTTP 狀態碼是 404 或 500。相反,它會將 Promise 狀態標記為 resolve (但是會將 resolve 的返回值的 ok 屬性設置為 false ),僅當網絡故障時或請求被阻止時,才會標記為 reject。
  • fetch() 可以不會接受跨域 cookies;你也可以不能使用 fetch() 建立起跨域會話。
  • fetch 不會發送 cookies。除非你使用了credentials 的初始化選項。(自 2017 年 8 月 25 日以后,默認的 credentials 政策變更為 same-origin。Firefox 也在 61.0b13 版本中進行了修改)

 

 

 

Response 對象

如上所述,Response 實例是在 fetch() 處理完 promise 之后返回的。

你會用到的最常見的 response 屬性有:

  • Response.status — 整數(默認值為200)為response的狀態碼。
  • Response.statusText — 字符串(默認值為"OK"),該值與 HTTP 狀態碼消息對應。
  • Response.ok — 如上所示,該屬性是來檢查response的狀態是否在 200 - 299(包括200 和 299)這個范圍內。該屬性返回一個布爾值 (en-US)

它的實例也可用通過 JavaScript 來創建,但只有在 ServiceWorkers (en-US) 中才真正有用,當使用 respondWith() 方法並提供了一個自定義的 response 來接受 request 時:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM