浅谈 : Promise使用解析


example 1
w1 =>w3=>w2
function w1(){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w1");
			resolve({w1:"w1数据"})
		},2000)
	});
	
	
};
function w2(data){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w2:"+data);
			resolve({w1:"data:w2数据"})
		},1000)
	});
};
function w3(){
	console.log("w3");
};
//[区别example2]
w1().then((data)=>{
	w2(data)
}).then((data)=>{
	w3();
}).catch((error)=>{
	console.log(error);
})
总结:function W3 在w2执行,因为then指代于w1,w3和w2无关系 
example 2
w1=>w2=>w3
function w1(){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w1");
			resolve({w1:"w1数据"})
		},2000)
	});
	
	
};
function w2(data){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w2:"+data);
			resolve({w1:"data:w2数据"})
		},1000)
	});
};
function w3(){
	console.log("w3");
};
//区别[example1]
w1().then((data)=>{
	w2(data).then((data)=>{
		w3();
	}).catch((error)=>{
		console.log(error);
	})
}).catch((error)=>{
	console.log(error);
})
总结:执行顺序w1=>w2=>w3,但是不属于链式结构
example 3
function w1(){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w1");
			resolve({w1:"w1数据"})
		},2000)
	});
	
	
};
function w2(data){
	return new Promise(function (resolve, reject) {
		setTimeout(()=>{
			console.log("w2:"+data);
			resolve({w1:"data:w2数据"})
		},1000)
	});
};
function w3(){
	console.log("w3");
};
//[区别example2]
w1().then((data)=>{
   return w2(data)
}).then((data)=>{
   return w3();
}).catch((error)=>{
	console.log(error);
})
总结:执行顺序w1=>w2=>w3,链式结构

example 4【进阶】
//[定义一个公共的promise实例]
function sendRequest(url, param) {
	return new Promise(function (resolve, reject) {
		request(url, param, resolve, reject);
	});
}
//ajax发送请求
function request(url, param, resolve, reject){
	setTimeout(()=>{
		console.log(url,param);
		resolve({id:1,name:'AA'});
	},1000)
};
//数据依次依赖前一个请求的值
sendRequest().then(function(data1) {
	console.log('第一次执行, 这是返回的数据:', data1);
	return sendRequest(data1.id,data1.name);
}).then(function(data2) {
	console.log('第二次执行, 这是返回的数据:', data2);
	return sendRequest();
}).then(function(data3) {
	console.log('第三次执行, 这是返回的数据:', data3);
}).catch(function(error) {
	//用catch捕捉前面的错误
	console.log('sorry, 请求失败了, 这是失败信息:', error);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值