// 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