zoukankan      html  css  js  c++  java
  • ES6中Promise的简单理解

    一个函数参数:new Promise(function(resolve, reject))

    每个Promise构造函数可接受一个参数,该参数为一个函数,该函数又有两个参数resolve和reject,分别表示为成功之后的回调函数和失败之后的回调函数。

    当异步操作执行成功后,会将异步操作结果作为参数传入 resolve 函数并执行,此时 Promise对象状态从 pending 变为 fulfilled ;
    失败则会将异步操作的错误作为参数传入 reject 函数并执行,此时 Promise对象状态从pending 变为 rejected

    两个状态转换:pending->fulfilled, pending->rejected

    从两种状态转换可以看出一个有三种状态,挂起态pending,已成功fulfilled,已失败rejected。状态一旦改变就不会再变。

    三个原型方法:.then(), .catch(), .finally()

    • .then()方法可提供一个或两个回调函数作为参数。第一个回调函数是Promise对象的状态由pending 变为 resolved 时执行;第二个回调函数则是Promise对象的状态由pending变为rejected 时执行,且第二个参数可选。
    Promise.then(function(value){
      // success
    },function(error){
      // failure
    })
    
    • .catch()方法提供一个回调函数作为参数,在失败时执行的回调函数。该回调函数的作用等同于.then()方法的第二个参数。以下写法等价。
    Promise.then(undefined, function(error){
      //failure
    })
    // 等价于
    Promise.catch(function(error){
      //failure
    })
    
    • .finally()方法,无论结局如何都会执行的回调函数。

    四个普通方法:.all(iterable), .race(iterable), .resolve(value), .reject(value)

    • .all()方法,iterable参数必须是一个可迭代对象。等所有传入的参数状态由pending->fulfilled时,执行状态为resolve的回调函数,即.then() 方法的第一个函数参数。若iterable中有一个状态变为rejected,则立马执行reject的回调函数。
    • .race()方法,iterable参数必须为可迭代对象。第一个状态由pending->rejected或pending->fulfilled触发,触发对应的resolve或reject函数,剩下的可迭代项继续执行,但执行结束后不再执行对应状态的回调函数。
    • .resolve()方法,用于返回一个状态为 fulfilled 的Promise对象
    • .rejecct()方法,用于返回一个状态为 rejected 的Promise对象
  • 相关阅读:
    docker 镜像导入导出[转]
    部署coredns
    构建docker私有库
    怎么安装Docker CE 17( Centos 7)
    [转]使用tcpdump抓取HTTP包
    VLOOKUP函数使用
    有趣:256个class选择器可以干掉1个id选择器——张鑫旭
    算警示吧——此文来自张鑫旭(说说CSS学习中的瓶颈)
    不使用JavaScript让IE浏览器支持HTML5元素——张鑫旭
    CSS中width和height与盒子模型的关系
  • 原文地址:https://www.cnblogs.com/rgqjson/p/13038709.html
Copyright © 2011-2022 走看看