Javascript 什么是;传递给NewPromiseCapability的非构造函数值;什么意思?

Javascript 什么是;传递给NewPromiseCapability的非构造函数值;什么意思?,javascript,promise,q,es6-promise,Javascript,Promise,Q,Es6 Promise,我使用了Kris Kowal的Q,但现在我试图减少库的数量,所以我改用原生Promises(但是,是的,我使用polyfill来支持internet explorer) 我的大多数函数都返回承诺,但有一个地方我想公开Q.all,因为它是由我自己的代码提供的。当我这样做的时候: MyLibrary.prototype.all=Promise.all; 然后(…)),我得到了“传递给NewPromiseCapability的非构造函数值”。这意味着什么?myLibrary从未正确地从Promise

我使用了Kris Kowal的Q,但现在我试图减少库的数量,所以我改用原生Promises(但是,是的,我使用polyfill来支持internet explorer)

我的大多数函数都返回承诺,但有一个地方我想公开Q.all,因为它是由我自己的代码提供的。当我这样做的时候:

MyLibrary.prototype.all=Promise.all;


然后(…)),我得到了“传递给NewPromiseCapability的非构造函数值”。这意味着什么?

myLibrary从未正确地从Promise继承,因此上下文(“this”)丢失

为了解决这个问题,我没有使用
myLibrary.all([…])
,而是使用Promise.all([…])


我想另一种选择可能是通过MyLibrary.prototype.all=Promise.all.bind(Promise)将.all()绑定到Promise,因为MyLibrary从未正确继承Promise,所以上下文(“this”)丢失

为了解决这个问题,我没有使用
myLibrary.all([…])
,而是使用Promise.all([…])

我想另一种选择可能是通过
MyLibrary.prototype.all=Promise.all.bind(Promise)