对promise的理解

new promise((resolve, reject) => {
	$.ajax({
		url: 'http://happymmall.com/uesr/get_user_info.do',
		type: 'get',
		success(res) { // 函数处理成功之后执行的方法
			resolve(res);
		},
		error(err) {   // 函数处理是吧之后执行的方法
			reject(err);
		}
	})
}).then((res)=> {
	console.dir(res); // 成功
}(err) => {
	console.dir(err);  // 失败
});
  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的结果)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值