您的位置:首页 > 其它

ES6学习总结之Promise

2018-03-15 20:33 411 查看
一个 Promise 对象可以理解为一次将要执行的操作(常常被用于异步操作),使用了 Promise 对象之后可以用一种链式调用的方式来组织代码,让代码更加直观。而且由于 Promise.all 这样的方法存在,可以让同时执行多个操作变得简单。接下来就来简单介绍 Promise 对象。
在 Promise 对象当中有两个重要方法————resolve 和 rejectresolve 方法可以使 Promise 对象的状态改变成成功,同时传递一个参数用于后续成功后的操作,在这个例子当中就是 Hello World! 字符串。reject 方法则是将 Promise 对象的状态改变为失败,同时将错误的信息传递到后续错误处理的操作。一.Promise 的三种状态上面提到了 resolve  reject 可以改变 Promise 对象的状态,那么它究竟有哪些状态呢?Promise 对象有三种状态:Fulfilled 可以理解为成功的状态
Rejected 可以理解为失败的状态
Pending 既不是 Fulfilld 也不是 Rejected 的状态,可以理解为 Promise 对象实例创建时候的初始状态
helloWorld 的例子中的 then 方法就是根据 Promise 对象的状态来确定执行的操作,resolve 时执行第一个函数(onFulfilled),reject 时执行第二个函数(onRejected)。注意:实例化的Promise对象会立即执行二.Promise.prototype.then() VS Promise.prototype.catch().then()方法是Promise原型链上的方法,它包含两个参数方法,分别是已成功resolved的回调和已失败rejected的回调。promise.then( () => { console.log('this is success callback') }, () => { console.log('this is fail callback') }).catch()的作用是捕获Promise的错误,与then()的rejected回调作用几乎一致。但是由于Promise的抛错具有冒泡性质,能够不断传递,这样就能够在下一个catch()中统一处理这些错误。同时catch()也能够捕获then()中抛出的错误,所以建议不要使用then()的rejected回调,而是统一使用catch()来处理错误promise.then( () => { console.log('this is success callback') }).catch( (err) => { console.log(err) })同样,catch()中也可以抛出错误,由于抛出的错误会在下一个catch中被捕获处理,因此可以再添加catch()使用rejects()方法改变状态和抛出错误 throw new Error() 的作用是相同的当状态已经改变为resolved后,即使抛出错误,也不会触发then()的错误回调或者catch()方法then() 和 catch() 都会返回一个新的Promise对象,可以链式调用promise.then( () => { console.log('this is success callback') }).catch( (err) => { console.log(err) }).then( ...).catch( ...)三.其他方法Promise.all(p1,p2,p3) 相当于将promise对象打包,打包完还是一个promise对象,必须确保所有的promise对象都是resolve状态,都是成功状态才返回4.Promise.race(p1,p2,p3) 只要有一个promise对象是resolve状态,就返回
(前端小白,如有错误,欢迎指正~~)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ES6 promise 异步