В какой версии асинхронного вы используете?
2.6.1
В какой среде возникла проблема (версия узла / версия браузера)
8.11.3
Что вы делали?Пожалуйста, включите минимальный воспроизводимый случай, иллюстрирующий проблему.
Предполагается, что fileObj поставляется извне:
async.auto({
download: (downloadCB) => {
if (fileObj) {
fs.writeFile(__dirname + ‘fileNew.txt’, fileObj.content, 'base64', function (err) {
if (err){
return downloadCB(err);
}
return downloadCB(null , fileObj.generatedFileName); // works fine
});
} else {
let err = new Error('File not found');
return downloadCB(err);
}
},
collectData: ['download', async (results, collectCB) => {
console.log(typeof collectCB); // prints undefined
console.log(typeof results); // prints correct object
let res = await anHttpRequest();
if (res.response && res.response.statusCode == 200) {
return collectCB(null , 'fileCombined.txt'); // This is where the ISSUE happens
}
else if(res.response.statusCode >= 300) {
return collectCB(new Error('Request failed inside async-auto'));
}
}],
filterData: ['collectData', (results, filterCB) => {
doFilter(results.collectData, filterCB);
}],
})
Что вы ожидали случиться?
После того, как collectData заканчивает выполнение, filterData должно начать выполнение с параметром, переданным внутри функции collectCB
Каким был фактический результат?
TypeError: collectCB не является функцией.
Тот же код хорошо работает с версией 2.0.1, но после обновления до 2.6.1 он перестал работать, и это важно для нас.Любые обходные пути также будут оценены.