Довольно обычный сценарий. Я хочу иметь некоторую развязанную часть кода, которая запускает событие, когда что-то готово. Это произойдет только один раз для запуска всего приложения.
С другой стороны, есть еще одна часть кода, где я хочу, чтобы что-то еще произошло, когда запускались два или более события. Я имею в виду как все, как зависимости.
Хорошо, больше асинхронных вещей вместе... определенно promises правильно?
Тогда я начал думать. Действительно ли разумно использовать pub/sub для одноразовых событий? Не было бы лучше просто сделать доступное обещание, которое решает, как только это событие будет запущено? Однако это означало бы, что мне нужно соединить этот развязанный код. Одна вещь заключается в совместном использовании EventEmitter, но зависит от какого-то кода, чтобы на самом деле создать обещание... это звучит довольно плохо.
Итак, я думаю о каком-то миксе. Наличие модуля, в котором другие модули могут запрашивать "событие" по его имени и получать подготовленный объект Promise. Другой модуль должен затем инициировать это событие и эффективно выполнять/отклонять это событие таким образом.
var promisedLand = require('./promisedLand');
promisedLand.waitFor('event'); // returns promise
promisedLand.resolve('event', value);
promisedLand.reject('event', error);
Что вы думаете об этом решении? Есть ли еще какое-то решение, подобное уже имеющемуся?