最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

es6之Promise的详细介绍

来源:动视网 责编:小采 时间:2020-11-27 20:20:01
文档

es6之Promise的详细介绍

es6之Promise的详细介绍:PromisePromise是一个对象,从它可以获取异步操作的消息;特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending
推荐度:
导读es6之Promise的详细介绍:PromisePromise是一个对象,从它可以获取异步操作的消息;特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending


Promise

  1. Promise是一个对象,从它可以获取异步操作的消息;

  2. 特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending到Rejected);

  3. 缺点:一旦创建就会立即执行无法中途取消;如果没有回调函数,内部抛出的错误无法反映到外部;当处于Pending时,无法得知目前进展到哪一阶段;

  4. 一般不要在then方法里面定义Reject状态的回调函数(即then的第二个参数),而是使用catch方法;因为这种可以捕获前面then中的错误,也更接近同步写法(try/catch)

  5. catch方法返回的还是一个 Promise 对象,因此后面还可以接着调用then方法;catch方法之中,还能再抛出错误

  6. Promise.all方法用于将多个Promise实例,包装成一个新的Promise实例;Promise.all方法的参数可以不是数组,但必须具有Iterator接口,且返回的每个成员都是Promise实例;只有p1 p2 p3状态都变成fulfilled,p状态才会变成fulfilled;只要有一个rejected,p就变成rejected;

  7. Promise.race也是将多个Promise实例包装成新的Promise;只要有一个对象状态变了,p状态就会跟着变,返回先改变的对象的值传给p的回调函数;

  8. Promise.resolve将对象转为Promise对象,状态为resolved

    // 将thenable对象转为Promise对象var thenable = {
     then(resolve, reject) {
     resolve(200)
     }
    }var p = Promise.resolve(thenable)
    
    p.then((data) => {
     console.log(data)
    }) // 200
  9. Promise.reject返回一个Promise对象,该实例状态为rejected;这个方法方法的参数,会原封不动地作为reject的理由,变成后续方法的参数。

  10. 两个附加方法

    // donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected)
     .catch(function(reason) {
     setTimeout(() => {throw reason}, 0) 
     });
    };// finallyPromise.prototype.finally = function (callback) {
     let P = this.constructor;return this.then(
     value => P.resolve(callback()).then(() => value),
     reason => P.resolve(callback()).then(() => { throw reason })
     );
    };

    done用于捕获任何时候可能出现的错误,并全局抛出;
    finally用于不管Promise对象状态如何,都会执行的操作,接受一个普通的回调函数作为参数(必执行);

文档

es6之Promise的详细介绍

es6之Promise的详细介绍:PromisePromise是一个对象,从它可以获取异步操作的消息;特点:对象的状态不受外界影响(Pending进行中、Resolved完成、Rejected失败),只有异步操作的结果可以决定当前状态;一旦状态改变就不会再变(只能从Pending到Resolved和Pending
推荐度:
标签: 介绍 简介 的介绍
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top