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

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

说我用Bluebird Promise替换了全局Promise对象(例如支持取消)。如果我然后使用async / await编写函数:

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

这里返回什么样的承诺?

IIRC,当代码编译到ES5时,它确实将返回可取消的Bluebird Promise,因为异步/等待被转换为在内部使用全局Promise对象。但是在async / await是本机结构的ES7中,它会在全局对象中使用Promise构造器,还是使用本机结构进行硬编码?

javascript promise bluebird ecmascript-7
1个回答
0
投票

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

[编译器应努力重现这种体验,但是,当它还包含需要放置在某个地方且为了简单起见而可能会依赖于全局Promise值的promise垫片(它可能被配置为自定义库)时,]。 >

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