说我用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构造器,还是使用本机结构进行硬编码?
本机语法将始终从当前领域创建本机promise对象,无论领域中的全局Promise
变量具有什么值。
[编译器应努力重现这种体验,但是,当它还包含需要放置在某个地方且为了简单起见而可能会依赖于全局Promise
值的promise垫片(它可能被配置为自定义库)时,]。 >