выглядит примерно так.Если уменьшение не прогрессирует после первого файла, то, скорее всего, task(first_file)
выбрасывает.Вы можете узнать об этом, регистрируя ошибки.
Кроме того, вам лучше возвращать обещание от one_by_one
и не передавать обратный вызов.
function one_by_one(objects_array, work) {
return objects_array.reduce(function (prom, object) {
return prom.then(function() {
return work(object);
});
}, Promise.resolve()); // initial
}
one_by_one(requestBodyAll, someWorkFn)
.then(task)
.catch(function(error) {
console.log(error);
});
one_by_one()
доставит (как в вопросе) результат iterator(last_file)
в качестве аргумента task
.Вы можете предпочесть ничего не передавать, в этом случае напишите:
.then(function() {
return task();
})
Вы можете защитить процесс от ошибок, перехватывая внутри one_by_one()
.