为什么在JavaScript上下文中无法解决Promises?

时间:2019-07-16 22:49:33

标签: javascript promise

我最近想到了一个问题,我不得不从现有的JavaScript代码中调用异步函数,最终不得不在整个堆栈中添加async / await,直到那时,因为我找不到调用方法异步地同步一个异步函数(就像您在这种情况下基本上使用其他所有语言所做的那样)。后来我了解到,通常无法在JavaScript上下文中以任何方式解决Promises,只有在脚本完成后,Promise才会在某个时候由引擎解决。

Example code

console.log('begin')
const theUsual = async () => 'Hello World'
Promise.resolve(theUsual()).then(console.log)
console.log('end')

输出为:

begin
end
Hello World

输出的顺序清楚地证明,只有在脚本完成后才能解决Promise。我的问题是:

为什么不能从JavaScript上下文中解析承诺的正式原因是什么?

Imo,添加Promise.resolveNow之类的内容来同步解决Promise会非常容易,类似于您的操作方式。通过调用get来解决Java的Future问题,但显然这样的事情并未使它成为语言。

0 个答案:

没有答案