Может кто-нибудь сказать мне, в чем разница между заданием и будущим параллельным действием? Потому что интерфейс выглядит так же

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

Другие вопросы по тегам