- 时刻注意
return
;
- 使用
Promise.promisify
简化对test(val, function(err, result){})
的处理;
- 尽量避免使用
deferred object
;
- 用于简化处理返回值是数组的情况;
- 用
es6
取代其处理返回数组的时候注意添加.all()
;
- 允许传入错误类型(
error constructor
)来区别错误判断,包括:
- TypeError,
- ReferenceError,
- EvalError,
- SyntaxError,
- RangeError,
- NetworkError,
- TimeoutError
- 也可以自己设置特别的错误类型,并且可以详细错误类型的信息;
- 可以传入一个返回布尔值的函数进行过滤;
- 传入一个对象简化判断;
- 如果把错误分成
Operational errors
和programmer errors
,则可以用error
方法来处理前者;这些错误包括:
* failed to connect to server
* failed to resolve hostname
* invalid user input
* request timeout
* server returned a 500 response
* socket hang-up
* system is out of memory
-
fulfilled
状态后触发;并与之后的.then
方法同时被触发;
-
fulfilled
状态触发后不会返回值到这个方法;同时其返回的方法也不会传递到下一个.then
方法;
- 传入函数,没有错误则其返回值为
fulfilled
状态,有错误则返回rejected
状态的错误;
- 处理机制与
Promise.try
类似,都传入函数;但其返回的是一个会返回promise
对象的方法;
- 将传入的数据转化为
promise
对象返回,除了原本是promise
对象且是rejected
状态的都会变成fulfilled
状态;
- 将传入的数据转化为
promise
对象返回,状态都为rejected
;
- 传入一个值,给后续的链式操作中绑定一个
this
为这个值;如果传入this
,则绑定的是.bind()
方法之前返回的值;
Collections
- 传入数组,当全部值为
fulfilled
状态时以数组形式传递返回值;
- 当有一个值状态为
rejected
时将改值传递到错误处理;其他值不传递;
- 参数为一般参数加处理函数;处理函数相当于一个
.then
方法;
Promise.join(val1, val2, val3, function (val1, val2, val3) {}).then...
- 处理机制与
Promise.all
类似,接受对象处理;
- 接受数组,会返回第一个达到
fulfilled
状态的值;如果是空数组或都为rejected
状态,则全部返回错误处理;
- 注意实际的运行时间是包括全部值的判断的;
- 第一参数为接受数组,第二参数为判断的个数; 设置个数必须,且不能大于数字个数,可以为0;
- 处理机制与
Promise.all
类似;返回最先到达设置个数的fulfilled
状态的值;
- 如果参数中
fulfilled
状态的值达不到设定个数,返回rejected
状态的值到错误处理函数;
Promise.reduce, Promise.filter, Promise.each
- 第一参数为判断函数;第二参数为设置并发数:
{concurrency: Infinity}
;设置并行个数能加快处理但不能保证返回顺序;
- 注意传递过来的必须是数组;
.reduce, .filter, .each
- 与
Promise.map
类似;区别在于没有并发设置参数,如果其中一个为rejected
状态,则之后的值便不再处理;
- 接受数组,返回第一个达到
fulfilled
状态的值;
Resource management
- 接受多个参数,最后一个为处理前面参数的函数,在前面参数都为
fulfilled
状态时才会处理;
Promisification