• node.js之Promise


    在node.js中,回调函数的多重嵌套可能会导致代码难以维护。因此,我们借助Promise来封装异步函数,使用统一的链式API来避免函数不断的嵌套匿名函数,脱离这多重回调的麻烦,使代码可读性更强。

    简单来说,Promise就是把函数的嵌套改成了并列,使其代码更友好。

    Promise对象一般有三种状态:Pending(未完成),Fulfilled(操作成功),Rejected(操作失败)

    说说他的一些常用方法:

    ①then()方法:

    then(onFulfilled,onRejected)方法接收两个参数,一般是两个函数,这两个函数是异步执行的,第一个参数用来处理操作成功后的结果,第二个参数用来处理操作失败后的原因。then()方法返回值是一个Promise对象,这一特点使得我们可以通过链式调用then()来达到控制流程的效果。关于then()方法函数的一些细节:

    onFullfilled或onRejected函数的返回值如果不是Promise对象,则该值将作为下一个then方法中onFulfilled方法的第一个参数;如果是,则then()方法的返回值为该Promise对象

    onFullfilled或onRejected函数若有异常抛出,则该then()方法返回的Promise对象的状态变为Rejected,如果Promise对象调用该then()对象,则该error对象会作为onRejected函数的第一个参数

    如果Promise对象的状态变为fulfilled并且then()方法中没有提供onFulfilled函数,则then()方法返回的Promise对象状态仍为fulfilled且成功的结果为上一个Promise的结果。

    基本思想

    • 异步任务返回一个Promise对象,它有三种状态

      • pending(未完成)

      • resolved,fulfilled(已完成)

      • rejected(失败)

    • 它有两种变化途径

      • pending --> resolved/fulfilled

      • pending --> rejected

    • 它有两种结果

      • 异步操作成功,返回一个值,状态变为resolved

      • 异步操作失败,抛出一个错误,状态变为rejected

    Promise使用.then()方法添加回调函数,then接收两个回调函数,第一个为成功时的回调函数,另一个为失败时的回调函数.主要为状态改变时调用相对的回调函数.
    而且then可以链式调用.

  • 相关阅读:
    nginx公网IP无法访问浏览器
    Internet接入方式
    Adobe Photoshop Lightroom 5.3和序列号
    getopt
    printf
    scanf
    cycling -avoid the vicious cycle
    ACE handle_timeout 事件重入
    Linux查看程序端口占用
    The GNU C Library
  • 原文地址:https://www.cnblogs.com/twoheads/p/9443770.html
Copyright © 2020-2023  润新知