zoukankan      html  css  js  c++  java
  • 关于promise的用法

    promise是一个对象,里面保存着某个未来才会结束的事件,通常是一个异步事件。

    promise对象的两个特点:

    1.对象的状态不受外界影响:pending(进行中) fulfilled(已成功) rejected(已失败)
    只有异步操作的结果可以决定当前状态,其他任何操作都无法改变这个状态

    2.一旦状态改变发,就不会再变resolved(已定型),任何时候都可以得到这个结果。
    状态改变只有两种可能: pending ==> fulfilled
    pending ==> rejected
    promise缺点:
    1.一旦创建,无法中途取消
    2.promise内部的报错,不会反映到外部
    3.当处于pending状态时,不知道具体进展到哪一个阶段(刚刚开始还是即将完成)

    promise是一个构造函数,用来生成promise实例。

    promise构造函数接收函数作为参数,函数参数又接收两个函数作为参数

    promise实例后,可以用then方法指定resolved和rejected两个回调函数

    Promise.prototype.then() then方法是挂在Promise实例的原型链上,then返回的是一个新promise实例

    promise对象改变状态,若为resolved则调用then中的第一个函数,若为rejected则调用第二个函数

    const promise = new Promise(function (resolve, reject) {
    ......
    if(){
    resolve(value)
    }else {
    reject(error)
    }

    })

    promise.then(function(value){ }, function(error){ })

    Promise.prototype.catch() 可以捕获到promise内部的报错并向外部抛出异常,一般不用then()的第二个回掉函数,推荐使用catch()

    Promise.prototype.finally()
    不管状态如何,最后都会执行的操作;
    finally的回调函数不接受任何参数

    Promise.all()将多个 Promise 实例,包装成一个新的 Promise 实例。
    每个promise实例都为fulfilled时,新的promise状态才为fulfilled;
    只要有一个promise实例为rejected,新的promise状态就为rejected。

    Promise.race()将多个 Promise 实例,包装成一个新的 Promise 实例。

    Promise.resolve()将原有的对象返回一个新的 Promise 对象,状态为resolved

    Promise.reject()将原有的对象返回为一个新的 Promise 实例,该实例的状态为rejected

    Promise.try() 不管函数是同步的还是异步的,都用promise来处理函数,函数返回值是一个promise对象。

  • 相关阅读:
    jsp+servlet+javabean实现ssh的mvc模式
    String类型数字始终保留两位小数
    关于truncate与checkident
    ajax实现mvc模式
    全面掌握IO(输入/输出流)
    搭建android开发环境
    org.w3c.dom(java dom)解析XML文档
    sql查询详解
    InstallShield 2012 Spring评估试用(1): 支持Windows 8和Windows Server 2012操作系统
    InstallShield 2012 Spring新功能试用(6): InstallScript工程支持64位组件(Components)
  • 原文地址:https://www.cnblogs.com/surui/p/9071973.html
Copyright © 2011-2022 走看看