对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的结果)

猜你喜欢

转载自blog.csdn.net/qq_30758077/article/details/85162042