1. 程式人生 > >對promise的理解

對promise的理解

  1. promise的相容性,考慮BlueBrid,promise polyfill,相容各個平臺

  2. then的執行是一步一步執行,等上一個then執行結束之後在執行下一個then,將上一個then返回的結果作為下一個then接收的結果。

  3. 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的結果)