Vue ---Promise

Promise

概念

对异步操作进行封装
是异步编程的一种解决方案
Promise 解决ajax无限极嵌套ajax
在这里插入图片描述

Promise 三种状态:pending、fulfill、reject

在这里插入图片描述

基本语法 链式调用

setTimeout();是一个模拟的网络请求。实际开发重视axios
在这里插入图片描述
第二种写法:写到一起
在这里插入图片描述

//Promise的参数本身是一个函数,也就是resolve,reject是一个函数
//一秒后执行一个业务逻辑,再过一秒再执行另外一个业务逻辑
//箭头函数:()=>{}
new Promise((resolve,reject)=>{
//异步操作
 setTime((data)=>{
 //成功的时候调用resolve
// resolve(data)
//错误的时候
reject("error")
},1000)

}).then((data)=>{
	//第一次的业务逻辑
	console.log("第一次请求的代码"+data);
	return new Promise((resolve,reject)=>{
	 setTime(()=>{
 		resolve()
		},1000)
	}).then(()=>{ 
	//第二次的业务逻辑
	console.log("第二次请求的代码"); 
	})
}).catch(error=>{
console.log(error); 
})

链式调用 简写过程

在这里插入图片描述

1.第一次简写

new Promise((resolve,reject)=>{
//异步操作
 setTime((data)=>{
 //成功的时候调用resolve
// resolve(data)
//错误的时候
reject("error")
},1000)

}).then((data)=>{
	//第一次的业务逻辑
	console.log("第一次请求的代码"+data);
	return new Promise((resolve,reject)=>{
	 setTime(()=>{
 		resolve()
		},1000)
	}).then(()=>{ 
	//第二次的业务逻辑
	console.log("第二次请求的代码"); 
	})
}).catch(error=>{
console.log(error); 
})

2 第二次简写

在这里插入图片描述

第三次简写:

在这里插入图片描述

异常简写

在这里插入图片描述

all使用方法:Promise.all([]).then(()=>{})

应用场景: 两个请求都同时满足的时候,才执行另外一个请求

在这里插入图片描述

Promise.all([
	new Promise((resolve,reject)=>{
	//网络请求ajax 在vue里面使用的是axios
	//这里用setTimeout模拟网络请求
	setTimeout(()=>{
		resolve({name:'why',age:18})
	},1000)
	}),
	new Promise(()=>{
		setTimeout(()=>{
		resolve({name:'sun',age:26})
	},1000)
	})
]).then(results=>{
	console.log(results);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值