为什么Promise没有get()函数?

时间:2017-07-28 16:23:18

标签: javascript promise

如果你知道Promise已经解决了,为什么你只能在它上面调用get()并获得价值?而不是将then(..)与回调函数一起使用。

所以不要这样做:

promise.then(function(value) {
  // do something with value
});

我希望能够做得更简单:

var value = promise.get();

Java为它CompletableFuture提供了这个功能,我认为没有理由说JavaScript无法提供相同的功能。

2 个答案:

答案 0 :(得分:7)

Java的get方法“如果有必要,等待此未来完成”,即它阻止当前线程。我们绝对不想在JavaScript中这样做,它只有一个“线程”。

可以将API中的方法集成到determine synchronously是否以及完成承诺的结果,但是他们没有这样做是件好事。只有一个方法then,以便在可用时获得结果,使事情变得更容易,更安全,更一致。编写自己的if-pending-then-else-else-that逻辑没有任何好处,它只会为错误提供可能性。异步很难。

答案 1 :(得分:0)

当然不是,因为任务将以异步方式运行,因此您无法立即获得结果。

但您可以使用sync / await来编写顺序异步代码。