// in using Task based on the fun-task library
Task.create((res, rej) => res(5)).run({
   success: console.log,
   failure: console.error
});
// 5

// using Future through Fluture
Future((reject, resolve) => res(5)).fork(
   console.error,
   console.log
);
// 5


如您在这里所看到的,它们都接受函数计算,它们都是惰性的,并且都是可组合的。那么这些类型之间的主要区别是什么。

最佳答案

注意:我是Fluture的作者。

FunTask的创建是Fluture的替代产品,允许取消和捕获异常。

发布之后不久,我与FunTask的作者Roman Pominov一起工作,也为Fluture添加了取消功能。

最后,自大约两年后发布9.0.0版以来,Fluture还具有捕获引发的异常的功能。之所以这么晚,是因为在较旧的V8版本上,这对性能产生了巨大影响。直到最近,到处都有try / catch语句才变得很快。

Fluture库中的这些新增功能意味着这些天,除了API方面的细微差别之外,Fluture和FunTask之间几乎没有差别。尽管Fluture一直在发展,并且包括诸如堆栈安全性和更好的性能之类的好处。

作为参考,我一直在Fluture的GitHub上的Wiki页面中跟踪JavaScript中不同的类似Future的库之间的差异:https://github.com/fluture-js/Fluture/wiki/Comparison-of-Future-Implementations

09-19 17:00