ES6 --- Promise(简介)

2018/08/07 JavaScript 共 620 字,约 2 分钟

日新月异,在处理异步编程的一些方案中,回调和事件在历史中举足轻重,但它们也会给代码带来繁琐和意外 bug,在群众的呼声中,Promise,这个新生的方案,写进了 ES6 的语言标准。让我们一探其神秘吧~

1. 什么是 Promise

  • 从形象上来说,promise 是一个容器,它里面存放着一个未来才会结束的事件,(通常是异步操作)
  • 从语法上来说,promise 是一个对象,从它那里可以获得异步操作的状态,在 ES6 中,提供了一系列统一的 API,各种异步操作都可以用同样的方法进行处理

2. Promise 有何特点

  • 对象状态不会受外界影响。 一个 Promise 对象,会有三个状态,初始化时的 pending,成功状态的 resolve,失败状态的 reject,只有其内部状态改变,才会使对象状态改变。
  • 状态一旦变更就无法修改,在哪里获得的都是这个结果。 通常,初始化一个 Promise 对象,它的状态是 pending,它的状态改变只有两种情况,从 pending 到 resolved,或者是从 pending 到 rejected。一旦其中之一情况发生,对象状态就凝固了,无法再改变,调用对象获得的状态一直是这个结果,无论何时,不像事件,错过了就监听不到了。

3. Promise 的缺点

  • 一旦创建,就已经在执行了,无法销毁(无法中途取消)
  • 如果没有配置回调函数,无法获得传出的信息,(无法获得内部抛出的错误)
  • 在 pending 状态下,无法得知异步操作是刚开始还是即将结束(无法得知当前进展到哪一阶段)

文档信息

Search

    Table of Contents