什麼是promise:
promise 是非同步程式設計的一種解決方案,比傳統的解決方案——**函式和事件——更合理和更強大。(地獄**)
promise物件的兩大特點:
1.物件不受外界的影響
2.一旦狀態發生改變,就不會再發生改變,任何時候都能得到這個結果。
getsiginmanageheader: function (,data) )})},
promise物件的狀態改變,只有兩種可能,一種是變成fulfilled(實現),另一種是變成rejected(駁回),這兩種狀態
現在的專案中,為了方便,基本上就返回兩個值了,乙個resolve成功的情況,另乙個就是error失敗的情況。
做個簡單的例子:
new promise((resolve, reject) => ).then(r => );出來的值是2,1
這裡promise正常執行,列印出2然後resolve給指出去了1,當.then()的方法後,輸出console.log(r),r等於1
.then()和.catch():
.then()就是成功後的響應,.catch()就是失敗後報錯才會走的
promise的機制原理,如果走.then()的話,就一直走.then()。.catch()同理。
promise的.then()和.catch()的順序沒有定義,隨便放
promise.resolve().catch(function(error) )
.then(function() );
如果它成功了,就跳過.catch()直接走.then(),如果.then()裡面的事件報錯的話,還是會走.catch()的
es8裡面有個簡寫方法
promise.finally(() => );
// 等同於
promise
.then(
result => ,
error =>
);
看著就叼。
感覺有用的promise方法all()方法(實際感覺這個方法真沒啥用還多寫了一步)
const p1 = new promise((resolve, reject) => ).then(result => result)
.catch(e => e);
const p2 = new promise((resolve, reject) => )
.then(result => result)
.catch(e => e);
promise.all([p1, p2])
.then(result => console.log(result))
.catch(e => console.log(e));
看上面的**,p1方法正確的話走的是resolve,錯誤的話它還是有catch方法,p2直接走的乙個錯誤方法,走的是自身帶的那個catch方法,在最外面的那個all方法,就會一直走的是then()p2的錯誤在自身的上面就已經把。catch方法走完了,all裡面的就相當於一點用都沒有。
其實我感覺把,你竟然已經就把p1p2的promise方法都已經弄完了,為啥你還在all一下,我感覺沒啥用。
promise.resolve()方法,將現有物件轉為promise物件
(1)引數是乙個promise物件,他會原封不動的還原回來
(2)引數是乙個thenable物件,用上面的方法會轉化未promise物件
(3)參實不是乙個promise物件,其他值的時候,會返回乙個新的promise物件
(4)promise.resolve()
方法允許呼叫時不帶引數,直接返回乙個resolved
狀態的 promise 物件。
Promise物件下的方法
請求介面,拿到資料 new promise resolve,reject resolve data 1000 then data return data.data then data reject 與resolve new promise resolve,reject then ctach 作用 捕...
深入解讀Promise物件
promise物件是非同步程式設計的一種解決方案,傳統的方法有 函式和事件,promise物件是乙個容器,儲存著未來才會結束的事件的結果 1.promise物件的狀態不受外界因素的影響,promise物件只有三種狀態,pending 進行中 resolve 已完成 reject 已失敗 只有非同步操...
Promise使用的心得
因為業務的關係,網頁和底層的互動很多並且很複雜,一般會巢狀好幾層,原始的ajax或者jquery的ajax寫起來巢狀太長,找問題時不容易找到切入點,因此使用es6的promise來解決ajax的多層巢狀問題。promise是抽象非同步處理物件以及對其進行各種操作的元件。promise是把類似的非同步...