美文网首页
Promise使用总结

Promise使用总结

作者: 大冬桥 | 来源:发表于2021-07-01 09:14 被阅读0次

Promise对象用于表示一个异步操作的最终完成(或失败)及其结果值。

Promise对象的几种状态:
  • 待定(pending):初始状态,即没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled):表示操作成功、完成。
  • 已拒绝(rejected):表示操作失败。
  • 已敲定(settled):如果一个 promise 已经被兑现(fulfilled)或被拒绝(rejected),那么也可以说它处于已敲定(settled)状态。
链式调用

promise可以使用promise.then((onFulfilled, onRejected)、promise.catch(onRejected)和 promise.finally(onFinally)进行链式调用,这些实例方法都会返回一个新的promise对象。这个promise对象的状态,由这些实例方法的参数(onFulfilled\onRejected\onFinally)的返回值决定:

两种情况返回的promise对象状态为已拒绝。第一种情况在函数中抛出异常;第二种情况是返回一个已拒绝的promise对象,此时返回的promise对象替换这些实例方法返回的对象。除了这两种情况,这些实例方法返回的promise对象都为已兑现状态。

所有promise都是异步的

处于已敲定状态的promise对象也可以接收操作,因此在完成异步操作和绑定处理方法之间不会存在竞争状态。需要注意的是所有的 promise 都一定是异步的。因此,一个已经处于"已敲定"("settled")状态的 promise 中的操作只有 promise 链式调用的栈被清空了和一个事件循环过去了之后才会被执行。

const promiseA = new Promise( (resolutionFunc,rejectionFunc) => {
   resolutionFunc(777);
});
// 这时,"promiseA" 已经被敲定了。
promiseA.then( (val) => console.log("asynchronous logging has val:",val) );
console.log("immediate logging");

// produces output in this order:
// immediate logging
// asynchronous logging has val: 777

相关文章

  • Promise使用总结

    Promise对象用于表示一个异步操作的最终完成(或失败)及其结果值。 Promise对象的几种状态: 待定(pe...

  • Promise和Observable的区别

    refer: promise-vs-observable先上总结: Promise A Promise hand...

  • Promise.resolve 的使用

    今天看到一个中间件,中使用了Promise.resolve,在这里做一下总结: Promise.resolve共有...

  • RN-ErrorUtils处理崩溃、promise错误

    ErrorUtils.js路径 promise路径 ErrorUtils使用 promise使用

  • Promise

    前段时间公司小程序项目使用了Promise来解决异步调用的问题,今天简单总结一下 1.Promise 的用法 Pr...

  • promise 并行 串行

    Promise.all并行执行promise 顺序执行promise 1.使用then链式操作 2.使用promi...

  • promise使用

    promise使用 js的作用 存储 传输 展示 数据存储对比总结 例子1 例子2,把异步变同步

  • JS基础:异步编程之Promise、async-await

    目录一. Promise 1. 为什么要使用Promise 2. Promise是什么 3. 如何使用Promis...

  • promise浅析

    创建promise Promise.prototype.then方法的使用Promise实例生成后,可用then方...

  • Promise

    Promise迷你书 Promise在规范上规定 Promise只能使用异步调用方式 。 Promise.reso...

网友评论

      本文标题:Promise使用总结

      本文链接:https://www.haomeiwen.com/subject/uobrultx.html