Я пытаюсь использовать async
для сбора некоторых дополнительных данных в моем массиве.Узел async не запущен async
для этой цели Айв создали следующее:
User_has_academy_module.findAll({
include: [{model: Module, include: [Category, ModuleType]}],
where: {academy_team_id: team_id, user_id: user_id}
}).then(function (modules) {
var i = 0;
async.map(modules, function (module,moduleCallback) {
var act = Academy_Attempt.build();
if(module.dataValues.is_complete == 1){
act.findByUserTeamAndModule(module.dataValues.user_id, module.dataValues.academy_team_id, module.dataValues.module_id, function (result) {
module.dataValues.academy_attempt = result;
moduleCallback(null, module);
}, function (error) {
})
}
});
onSuccess(modules);
})
как вы можете видеть из вышесказаннога я сначала собрать массив называется modules
, что мне нужна петля на каждый из этих modules
я хочу найти вывод дополнительных данных, если значение называется is_complete == 1
когда он находит значение должно установить module.dataValues.academy_attempt = result
После того, как все модули были итерировать он должен вызвать функцию обратного вызова (onSuccess
) и вернуть модули.
Однако он выполняет onSuccess
перед асинхронным вызовом.
Так что мой вопрос в том, что я делаю неправильно и как это исправить?
Просто вызовите функцию 'onSuccess (modules)' внутри обратного вызова 'async.map'. –