ES6学习总结之Promise
2018-03-15 20:33
411 查看
一个 Promise 对象可以理解为一次将要执行的操作(常常被用于异步操作),使用了 Promise 对象之后可以用一种链式调用的方式来组织代码,让代码更加直观。而且由于 Promise.all 这样的方法存在,可以让同时执行多个操作变得简单。接下来就来简单介绍 Promise 对象。
在 Promise 对象当中有两个重要方法————resolve 和 reject。resolve 方法可以使 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状态,就返回
(前端小白,如有错误,欢迎指正~~)
在 Promise 对象当中有两个重要方法————resolve 和 reject。resolve 方法可以使 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对象学习总结
- Javascript ES6重点学习总结
- es6字符串,数组,对象学习总结
- 详解ES6中的 Set Map 数据结构学习总结
- ES6学习教程之Map的常用方法总结
- ES6学习随笔--字符串模板、解构赋值、对象、循环、函数、Promise、Generrator
- ES6学习笔记--promise对象
- 前端学习总结(十八)ES6——新一代的javascript
- ES6学习错误总结1
- ES6总结--Promise 、Generator 、Async/Await
- Promise/A+规范学习总结
- ES6学习总结之解构赋值及字符串模板
- ES6学习总结之函数变化(函数默认参数,扩展运算符,箭头函数)
- 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise
- ES6学习总结之变量声明
- ECMAScript 6 学习系列课程 (ES6 Promise对象的使用)
- ES6 原生promise 与 Q的比较学习
- 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise 推荐
- es6 标准 Promise 学习笔记
- ES6 Promise对象的学习笔记