Итак, проблема в вашем текущем вопросе связана с тем, что ваша add
функция не возвращает значение, я вижу, что она возвращает неопределенное значение.
Если обещание возвращает что-то еще, кроме обещания вего блок then
/ catch
, он будет использовать этот вход для следующей функции и не будет ждать прохождения внутренних процессов, прежде чем завершить
Если внутри вашего then
/ catch
блоки, вы бы вернули обещание, он подождет, прежде чем перейти к следующему then
блоку, таким образом обрабатывая ваши запросы последовательно.
Теперь в вашем текущем коде, я полагаю, проще всего было бы обработать разрешение внутриваше сокращение, поскольку вы, похоже, уже застряли с дескриптором обратного вызова.
req.reduce((promise, audit) => {
return promise.then(_ => new Promise(
function( resolve, reject) {
this.add(audit, function(err,data){
if (err){
console.log('\n'+i+ ' ' + data.scanner_ui + '\n');
reject( err );
return;
}
resolve( data );
});
})
);
}, Promise.resolve()).catch(error => {console.log(error)});
в этом случае обещание будет либо reject
, либо resolve
.Я решил отправить err
и data
соответственно, так что это будет обработано в конце, если произойдет ошибка, и вы сможете получить последние данные, которые были успешно сохранены