Promise.coroutine удобна, когда у вас есть несколько обещаний, и одно обещание использует результат другого обещания.
Вот пример:
var sendEmailForUploadId = Promise.coroutine(function* (uploadId) { var filemetas = yield Filemeta.find({ uploadId }); var bpInfo = yield BpInfo.findOne({ uploadId }); var info = { bpInfo, filemetas, HOST }; var template = yield generateTemplateWithInfo(info); try { yield sendEmail(template, sendToEmail); } catch (e) { throw e; } });
Мы используем yield для функции, которая возвращает обещание. В конце у нас есть блок try-catch, чтобы эта функция могла передать ошибку промису, использующему всю эту функцию. Я имею в виду, что функция, использующая это обещание, может обработать ошибку.