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可以链式调用.

posted @ 2018-08-08 16:40  twoheads  阅读(348)  评论(0编辑  收藏  举报