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对象。

  • 相关阅读:
    「译」JVM是如何使用那些你从未听过的x86魔幻指令实现String.compareTo的
    「译」Graal JIT编译器是如何工作的
    [Inside HotSpot] C1循环不变代码提升优化
    Java逆变(Covariant)和协变(Contravariant)
    [Inside HotSpot] Xcode编译调试OpenJDK12
    [Inside HotSpot] UseParallelGC和UseParallelOldGC的区别
    [Inside HotSpot] Java分代堆
    [Inside HotSpot] Serial垃圾回收器 (二) Minor GC
    [Inside HotSpot] Epsilon GC
    [Inside HotSpot] Serial垃圾回收器 (一) Full GC
  • 原文地址:https://www.cnblogs.com/surui/p/9071973.html
Copyright © 2011-2022 走看看