我運行在Promise.all使用jQuery一些AJAX請求:訪問jQuery的Ajax錯誤
const firstFetchPromise = $.ajax({ url: '/some/url' });
const secondFetchPromise = $.ajax({ url: '/another/url' });
Promise.all([ firstFetchPromise, secondFetchPromise ])
.then(results => storeResults(results))
.catch(e => {
console.log(e); // e is a promise, how to get the ajax error?
});
爲了測試錯誤處理我關機了Ajax請求得到他們的數據服務器來自並且瀏覽器使用URL記錄ERR_CONNECTION_REFUSE。
catch語句記錄的東西,看起來像一個承諾:
abort:ƒ (a),
always:ƒ(),
complete:ƒ(),
done:ƒ(),
error:ƒ(),
fail:ƒ(),
getAllResponseHeaders:ƒ(),
getResponseHeader:ƒ (a),
overrideMimeType:ƒ (a),
pipe:ƒ(),
progress:ƒ(),
promise:ƒ (a),
readyState:0,
responseText:"",
setRequestHeader:ƒ (a,b),
state:ƒ(),
status:0,
statusCode:ƒ (a),
statusText:"error",
success:ƒ(),
then:ƒ(),
我如何獲得的Ajax錯誤那是在承諾這樣我就可以顯示在網頁中可讀的錯誤訊息?
'e是一個promise' - 它不應該是 - 那控制檯登錄你已經證明不看任何類似承諾(getResponseHeader,getAllResponseHeaders ,setRequestHeader,overrideMimeType都看起來像XHR方法) –
這很可能是這種情況,我是承諾的新手,更習慣於回調。我用完整的對象更新了問題。我期待會有一些網絡相關的錯誤消息。作爲承諾的關鍵的對象,然後,失敗等,所以我認爲這是一個承諾。 – user3381520