es6中的promise对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6中的promise对象相关的知识,希望对你有一定的参考价值。
promise对象,用来传递异步操作的消息。它代表了某个未来才会知道结果的事件(通常是一个异步操作),并且这个事件提供统一的API。
promise对象有两个特点:
1.对象的状态不受外界影响。promise对象代表一个异步操作,有3种状态:pending(进行种),resolved(已完成,又称fulfilled),rejected(已失败)。只有异步操作的结果可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是"promise"这个名字的由来,它在英语中的意思为"承诺",表示其他手段无法改变。
2.一旦状态改变就不会再变,任何时候都可以得到这个结果。promise对象的状态改变只有两种可能:从pending到resolves和pending到rejected。只要其中之一发生,状态就凝固了,不会再变,会一直保持这个结果。就算改变已经发生,你再对promise对象添加回调函数,也会立即得到这个结果。这与事件(event)完全不同。事件的特点是,如果你错过了它,再去监听是得不到结果的。
有了promise对象,就可以将异步操作以同步操作的流程表达出了,避免了层层嵌套的回调函数。此外,promise对象提供统一的接口,使得控制异步操作更加容易。
promise也有一些缺点。其中,无法取消promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,promise内部抛出的错误不会反应到外部。再者,处于pending状态时,无法得知目前发展到哪一阶段(刚刚开始还是即将完成)。
如果某些事件不断地反复发生,一般来说,使用stream模式是比部署promise更好的选择。
以上是关于es6中的promise对象的主要内容,如果未能解决你的问题,请参考以下文章