1.Promise 的含义
Promise 是异步编程的一种解决方案
简单来说, 就是一个容器, 里面保存着某个未来才会结束的事件的结果 (通常是一个异步操作)
从语法上来说, Promise 是一个对象, 从它可以获取异步操作的消息.
特点:
(1) 状态不受外界影响. 三种状态, pending 进行中, fulfilled 已成功和 rejected 已失败. 只
有异步操作的结果可以决定当前的状态
(2) 一旦状态改变, 就不会改变, 任何时候都可以得到这个结果.
pending 进行中 ->fulfilled 已成功
pending 进行中 ->rejected 已失败
resolved(已定型) 表示 fulfilled 已成功
2. 基本用法
- const promise=new Promise((resolve,reject)=>{
- if(/* 异步操作成功 */){
- resolve(value);
- }else{
- reject(error)
- }
- })
Promise 实例生成以后, 可以用 then 方法分别指定 resolved 状态和 rejected 状态的回调函数.
promise.then(value=>{
成功
},error=>{
失败
- })
- function timeout(ms){
- return new Promise((resolve,reject)=>{
- setTimeout(resolve,ms,'done')
- })
- }
- timeout(1000).then(val=>{
- console.log(val)
- })
- 3.Promise.prototype.then()
4.Promise.prototype.catch() 方法是. then(null, rejection) 或. then(undefined, rejection) 的别名, 用于指定发生错误时的回调函数.
then 方法指定的回调函数, 如果运行中抛出错误, 也会被 catch 方法捕获.
- p.then((val) => console.log('fulfilled:', val)).then(null, (err) => console.log("rejected:", err));
- promise.then(res=>{
- success
- }).catch(err=>{
- error
- })
Promise 内部的错误不会影响到 Promise 外部的代码, 通俗的说法就是 "Promise 会吃掉错误".
5.Promise.prototype.finally() finally 方法用于指定不管 Promise 对象最后状态如何, 都会执行的操作.
finally 方法的回调函数不接受任何参数, 这意味着没有办法知道, 前面的 Promise 状态到底是 fulfilled 还是 rejected. 这表明, finally 方法里面的操作, 应该是与状态无关的, 不依赖于 Promise 的执行结果.
- 6.Promise.all()
来源: http://www.bubuko.com/infodetail-3355222.html