Promise 对象

promise 对象的两个特点

  1. 对象的状态不受外界影响。
    pending:初始状态。
    fulfilled:操作成功。
    rejected:操作失败。
    只有异步操作的结果,可以决定当前是哪一种状态。
  2. 一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有从初始状态变为成功状态,或者从初始状态变为失败状态。

Promise 的优缺点

  1. 可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数,此外,promise 对象提供了统一的接口,使得控制异步操作更加容易操作。
  2. 缺点:第一,无法取消promise,一旦新建它就会立即执行,无法中途取消,其次,如果不设置回调函数,promise内部抛出的错误,不会反应到外部;第三,当处于初始状态时,无法得知进展到哪一个阶段(刚刚开始还是即将完成)

创建promise

new Promise((resolve,reject)=>{
	// 异步处理
	// 处理结束后调用 resolve 或 reject
)
promise构造函数包含一个函数回调,这个函数带有两个参数resolve和reject两个参数在这个回调理执行一些异步操作,如果一切正常,则调用resolve,否则调用reject。
已经实例化过的promise对象可以调用promise.then()方法,传递resolve和reject方法作为回调;promise.then(onFulfilled,onReject)也可以这样子promise.then(onFulfilled).catch(onReject)

promise.all()

promise.all 方法用于将多个promise实例,包装成一个新的promise实例。
var p = Promise.all([p1,p2,p3])

Promise方法接受一个数组作为参数,p1,p2,p3都是Promise 对象的实例
(1)只有p1,p2,p3的状态都变为成功时,p的状态才会变成成功,此时p1,p2,p3的返回值组成一个数组,传递给p的回调函数。
(2)只要p1,p2,p3之中有一个被rejected,p的状态就会变成rejected,此时第一个被rejected的实例的返回值,会传递给p的回调函数。

promise.race

与promise.all相似,都是以一个Promise对象组成的数组作为参数,不同的是,只要当数组中的其中一个Promise状态变成resolved或者rejected时,就可以调用.then()方法了。

Promise.resolve 方法 和 Promise.reject 方法

将现有对象转为Promise对象,Promise.resolve()就会起到这个作用。

var p = Promise.resolve('Hello')
p.then(res=>{
	console.log(res)
})
// Hello
var err = Promise.reject('出错拉!')
err.then().catch(e={
	console.log(e)
})
// 出错拉!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值