ES学习之promise
初入新公司,恰逢小组分享会
因为之前很少用ES6,所以昨天下午看了很多promise的相关知识
学习一个知识,必然是它是什么?它有什么用?
SO,promise是异步编程的一种解决方案,所谓同步、异步编程就如同物理电流上的串联和并联。
promise对象的两个特点:对象的状态不受外界影响。
一旦状态改变,就不会再变(一旦改变状态会被凝固)
promise对象的三个状态:pending(进行中),resolve(又称fullfilled,已完成),reject(已失败)
promise对象的优点:将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
Promise
对象提供统一的接口,使得控制异步操作更加容易。
promise对象的缺点:① 无法取消Promise
,一旦新建它就会立即执行,无法中途取消
② 如果不设置回调函数,Promise
内部抛出的错误,不会反应到外部。
③ 当处于Pending
状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise
更好的选择。
promise用法:
var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } });
Promise
实例生成以后,可以用then
方法分别指定Resolved
状态和Reject
状态的回调函数。
promise.then(function(value) {
// success
}, function(error) {
// failure
});
promise.prototype.then
promise.prototype.catch
Promise.all
Promise.race
待续。。。。