我正在使用节点12.10.0
似乎异步函数未使用全局承诺,如下所示
异步函数返回的promise不应使用bluebird作为其promise构造函数,因为bluebird是全局promise(即Promise === bluebird返回true,如下所述)?
const bluebird = require('bluebird');
global.Promise = bluebird;
const f = async () => {
};
const p1 = new Promise((resolve) => resolve());
const p2 = f();
console.log(Promise === bluebird); // true
console.log(p1 instanceof bluebird); // true
console.log(p2 instanceof bluebird); // false
异步功能始终使用内置的Promise,无论您在global.Promise
中输入什么:
14.6.11 Runtime Semantics: EvaluateBody
- 让promiseCapability成为! NewPromiseCapability(%Promise%)。
注意,它使用%Promise%
内部对象,而不是global.Promise
。