對promise的理解
阿新 • • 發佈:2018-12-22
-
promise的相容性,考慮BlueBrid,promise polyfill,相容各個平臺
-
then的執行是一步一步執行,等上一個then執行結束之後在執行下一個then,將上一個then返回的結果作為下一個then接收的結果。
-
then和catch返回的都是promise物件,可以在每一個then的後面加上catch可以即使捕獲到錯誤。then和catch返回的都是promise物件,可以在每一個then的後面加上catch可以即使捕獲到錯誤。
new promise(resolve => { settimeout(()=>{ resolve(); // 資料完成處理 },2000); }).then(value => { // 成功 }).catch(erroe => { reject(); // 資料處理出錯 });
doSomething()和doSomethingElse()是兩個promise函式
1. doSomething().then(function() { return doSomethingElse(); }).then(finalHandler); // 先執行doSomething =》doSomethingElse(undefined) =》finalHandler(doSomethingElse) 2. doSomething().then(function() { doSomethingElse(); }).then(finalHandler); // 先執行doSomething =》doSomethingElse(undefined)沒有返回函式,返回為null,幾乎是立即執行 =》finalHandler(undefined) 3. doSomething().then(doSomethingElse()).then(finalHandler); // 先執行doSomething =》doSomethingElse(undefined) 會和doSomething同時執行,返回的是promise例項,這個then會被忽略。 =》finalHandler(執行的是doSomething返回的結果) 4. doSomething().then(doSomethingElse).then(finalHandler); // 先執行doSomething =》doSomethingElse(doSomething執行的結果) =》finalHandler(doSomethingElse的結果)