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对象
  • 相关阅读:
    CCF CSP 题解
    CCF CSP 2019032 二十四点
    CCF CSP 2018121 小明上学
    CCF CSP 2019092 小明种苹果(续)
    CCF CSP 2019091 小明种苹果
    CCF CSP 2019121 报数
    CCF CSP 2019031 小中大
    CCF CSP 2020061 线性分类器
    CCF CSP 2020062 稀疏向量
    利用国家气象局的webservice查询天气预报(转载)
  • 原文地址:https://www.cnblogs.com/rgqjson/p/13038709.html
Copyright © 2011-2022 走看看