在Promise.all(ES6和Bluebird)的可能性

Est*_*ask 1 javascript promise bluebird es6-promise

这个安全装置是否必要?

Promise.all([...].map((thenable) => Promise.resolve(thenable)));
Run Code Online (Sandbox Code Playgroud)

是否有可能和安全供应thenables到采集方法- Promise.all,Promise.race等?任何陷阱?

问题涉及Bluebird,以及polyfilled和所有本机ES6承诺实现.

Tim*_*imo 5

这不是必需的,应该由promise实现本身完成:

all函数返回一个新的promise,它通过传递的promise的一个履行值数组来实现,或者拒绝第一个通过的拒绝承诺的原因.它在运行此算法时将传递的iterable的所有元素解析为promises.

ES2015规范,第25.4.4.1段Promise.all(可迭代)

MDN更易于访问:

如果在可迭代数组中传递的东西不是一个promise,那么它将被转换为一个Promise.resolve.