• 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对象
  • 相关阅读:
    重新理解js的执行环境和闭包
    给开发插上想象力的翅膀
    Vue源码的初始化以及数据驱动逻辑
    解析Vue源码之前
    前端模块化发展介绍和未来展望
    现代前端框架具备的特征分析及Vue、React对比
    始于Flux的单项数据流发展简单介绍
    用面向对象编程解决常见需求场景
    【Docker】之重启容器相关命令
    【Java】之获取CSV文件数据以及获取Excel文件数据
  • 原文地址:https://www.cnblogs.com/rgqjson/p/13038709.html
Copyright © 2020-2023  润新知