Может кто-нибудь сказать мне, в чем разница между заданием и будущим параллельным действием? Потому что интерфейс выглядит так же
// 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
Как вы можете видеть здесь, оба принимают вычисления функций, ленивые и оба являются компонуемыми. Так в чем главное отличие этих типов?
1 ответ
Примечание: я автор Fluture.
FunTask был создан как альтернатива Fluture, которая позволяла отменять и ловить исключения.
Вскоре после его выпуска я работал вместе с автором FunTask Романом Поминовым, чтобы также добавить отмену в Fluture.
Наконец, после выпуска версии 9.0.0, которая произошла примерно два года спустя, Fluture также имеет возможность перехватывать выданные исключения. Причина, по которой это произошло так поздно, заключается в том, что на старых версиях V8 это оказало огромное влияние на производительность. Только недавно было сделано быстро, чтобы иметь try
/catch
заявления везде.
Эти добавления в библиотеку Fluture означают, что в наши дни, кроме незначительных различий в API, между Fluture и FunTask очень мало различий. Хотя Fluture продолжает развиваться и имеет такие преимущества, как безопасность стека и лучшая производительность.
Для справки, я отслеживал различия между различными библиотеками, похожими на Future в JavaScript, на вики-странице на GitHub Fluture: https://github.com/fluture-js/Fluture/wiki/Comparison-of-Future-Implementations