Promise

 ES6是一个非常重要和好用的特性就是Promise

Promise作用

Promise 是异步编程的一种解决方法

什么时候需要处理异步事件

一种很常见的场景:网络请求

当我们封装一个网络请求的函数,因为不能立即拿到结果,所以不能将结果简单的返回

所以往往我们会传入另外一个函数,在数据请求成功时,将数据通过传入的函数回调出去

如果只是一个简单的网络请求,那么这种方案不会带来很大麻烦

但是,当网络请求非常复杂时,回调就会很麻烦

使用的就是链式编程,可以是代码更加具有逻辑性

new Promise((resolve,reject)=>{
				setTimeout(()=>{
					//成功的时候调用resolve
					//resolve('hello world')
					
					//失败的时候调用reject
					reject('error message')
				},1000)
			}).then((data) =>{
				//可处理多行代码
				console.log(data);
				console.log(data);
				console.log(data);
				console.log(data);
				console.log(data);
			}).catch((err) =>{
				console.log(err);
			})

Promise三种状态

首先,当我们开发中有异步操作时,就可以给异步操作包装一个Promise

异步操作之后会有三种状态:

pending:等待状态,比如正在进行网络请求,或者定时器没有到时间

fulfill:满足状态,当我们主动回调了resolve 时,就处于该状态,并且会回调 .then()

reject:拒绝状态,当我们主动回调了 reject 时,就处于该状态,并且会回调 .catch()

new Promise((resolve,reject)=>{
				setTimeout(()=>{
					//成功的时候调用resolve
					//resolve('hello world')
					
					//失败的时候调用reject
					reject('error message')
				},1000)
			}).then((data) =>{
				//可处理多行代码
				console.log(data);
				console.log(data);
				console.log(data);
				console.log(data);
				console.log(data);
			}).catch((err) =>{
				console.log(err);
			})

Promise 链式调用

在Promise 的流程图时,发现无论是 then 还是 catch 都可以返回一个 Promise 对象

所以,我们的代码其实是可以进行链式调用的:

通过Promise 包装了一下新的数据,将 Promise 对象返回了

Promise.resolve():将数据包装成 Promise 对象,并在 内部回调了 resolve()函数

Promise.reject() :将函数包装成 Promise 对象,并且在内部回调了 reject() 函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值