promise补充点

使用场景

1》解决回调地狱问题,常常第一个函数的输出是第二个函数的输入这种现象

多并发请求,获取并发请求中的数据

2》比如:一些游戏类的素材比较多的应用,打开网页时,预加载需要用到的各种资源如图片,flsah以及各种静态文件,所有加载完后,我们进行页面初始化(使用all方法)

3》比如:现在有个异步操作ajax请求,我们需要当所有异步请求都成功的时候,执行后续操作(使用all方法)

//多个ajax(异步)需要顺序执行
new Promise(ajax1).then(function(){
	return new Promise(ajax2);
}).then(function(){
	return new Promise(ajax3)
}).then(ajax4)
//有三个异步必须都执行完后,才能执行第4个
Promise.all([new Promise(func1),new Promise(func2),new Promise(func3)]).then(func4)
把多个Ajax请求顺序着写下来了,而后面的请求,对前面请求的返回结果,是有依赖的
function ajax(url,data,callback){
	var p=new Promise(function(resolve,reject){
		$.ajax({
			url:url,
			type:data==null?'GET':'POST',
			dataType:"json",
			data:data==null?'':JSON.stringfiy(data),
			async:true,
			contentType:"application/json",
			success:function(resp){
				callback(resp);
				resolve();
			},
			error:function(XMLHttpRequest,textStatus,errorThrow){
				if(XMLHttpRequest.status=="401"){
					 window.parent.location = '/enterprise/enterprise_login.html';
                    self.location = '/enterprise/enterprise_login.html';
				}else{
					alert(XMLHttpRequest.responseText);
				}
				 reject();
			}
		});
	});
	return p;
}
ajax('/prefix/entity1/action1',null,function(){
	someData.attr1 = resp.attr1;
}).then(
     ajax('/prefix/entity1/action2',someData,function(resp){
}
).then(
       initVue();
).then(
//do something else
)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值