#javascript #promise #deferred #frp #bacon.js
#javascript #обещание #отложенный #frp #bacon.js
Вопрос:
Я всегда делаю что-то подобное для начальных процессов:
$.when(dom(), webrtc(), websocket('wss://example.com/'), sleep(3000)).then(load, fail);
dom
, webrtc
, websocket
, и sleep
являются объектами Promise . Это выражение полезно для загрузки некоторых параллельных процессов для инициализации.
Теперь мне интересно, как я могу выразить эти вещи с помощью Bacon.js , способ функционального реактивного программирования.
Любая идея будет оценена. Заранее спасибо.
Ответ №1:
Прежде всего, совершенно нормально смешивать и сопоставлять обещания в вашем коде BaconJS. Тем не менее, учитывая абстракцию, у fromPromise
BaconJS есть метод.
Используйте Bacon.fromPromise
:
var ready = Bacon.fromPromise($.when(dom(),
webrtc(),
websocket('wss://example.com/'),
sleep(3000)))
ready.onValue(function(value){
console.log("All ready");
});
Обратите внимание, что сила здесь заключается в объединении этих потоков на этапе инициализации — вам это редко нужно, поэтому на вашем месте я бы, вероятно, придерживался promise .
Комментарии:
1. Спасибо за ваш ответ. Да, инициализацию редко нужно вызывать. Мне просто интересно, могу ли я удалить зависимость от Promise и использовать вместо этого только бекон или нет…
2. Хотя почему? Наличие разных абстракций, каждая из которых уместна, — это хорошо 🙂