我最近从JAVA 8使用Typescript / Javascript编程。当我遇到async/await
时,它使我想起CompletableFuture
。在java中,无论方法的返回类型如何,我都可以在方法内部调用someMethodReturningFuture.get()
并可以随意阻止执行。但是在JavaScript中,当我们想使用async
阻止其他异步方法时,为什么需要将方法声明为await
?也许到现在为止我一直都不太相信Java/CompletableFuture
。
因为JS具有同步执行模型。产生的行为通常被描述为“单线程”。当然,您可以阻止该“单线程”等待promise的解决,但这会阻止anything²,这是您可能不希望的行为,因此它不是语言的一部分。 >
²:包括浏览器渲染/对用户的反应,以及承诺解决方案本身...