如果我替换全局对象上的承诺,异步/等待使用什么承诺?



假设我用 Bluebird 承诺替换全局Promise对象(例如支持取消(。如果我然后使用async/await编写一个函数:

async function foo() {
const response = await fetch(...);
const result = doSomethingWith(response);
return result;
}

这里回报了什么样的承诺?

IIRC 当代码编译到 ES5 时,它确实会返回一个可取消的 Bluebird promise,因为 async/await 被转换为在内部使用全局 Promise 对象。但是在 ES7 中,async/await 是一个本机构造,它是在全局对象中使用 Promise 构造函数,还是硬编码以使用本机构造函数?

本机语法将始终从当前领域创建本机 promise 对象,无论域中的全局Promise变量具有什么值。

转译器应努力重现该体验,但是,当它还包含一个 promise 填充程序(可能配置为自定义库(时,该填充程序需要位于某个地方并且为了简单起见,可能取决于全局Promise值。

最新更新