异步函数返回的承诺不是global.Promise的实例

问题描述 投票:0回答:1

我正在使用节点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
javascript node.js promise async-await bluebird
1个回答
0
投票

异步功能始终使用内置的Promise,无论您在global.Promise中输入什么:

14.6.11 Runtime Semantics: EvaluateBody

  1. 让promiseCapability成为! NewPromiseCapability(%Promise%)。

注意,它使用%Promise%内部对象,而不是global.Promise

© www.soinside.com 2019 - 2024. All rights reserved.