Я использую async для каждой задачи, с которой я сталкиваюсь, проблема в том, что окончательный обратный вызов никогда не выполняется
Сценарий : у меня есть список контактов и я хочу отправить сообщениевсем контактам параллельно и при отправке сообщения хотите сохранить ответ в массиве и затем выполнить какое-либо действие при окончательном обратном вызове
sms.js
function SmsService() {}
SmsService.prototype.sendSms = function(value, callback) {
client.messages
.create({
body: value.body,
from: value.from,
to: value.to
})
.then(message => {
console.log('meesage going', message.sid);
callback(null,message.sid)
})
.catch(e => {
callback(null,'not send')
})
}
module.exports = SmsService;
sender.js
var SmsService = require(path.resolve(__dirname, './sms'));
var smsService = new SmsService();
var data = [{body:'1232324',from:'+12323123',to:'+12312323'},
{body:'112123234',from:'+123123123',to:'+123213123'}, {body:'12sadasdasd34',from:'+112123123',to:'+1223213123'}]
async.forEachOf(data, function (value, i, cb) {
console.log('started',i)
smsService.sendSms(value, function(error, result) {
console.log('sending',i,value.to)//only get result for first item
results.push(result)
cb()
})
}, function (err) {
if (err) console.error(err.message);
console.log('all done')//never executes
console.log(results);//never executes
});
Если я перевожу асинхронную часть в службу SMS, она работает нормально, но я хочу оставить отдельную службу SMS