基于
documentation
无论我们在哪里接受节点样式的异步函数,我们也直接接受ES2017异步函数。在这种情况下,将不会向异步函数传递最终回调参数,任何抛出的错误都将用作隐式回调的err参数,返回值将用作结果值(i、 e.拒绝返回的承诺成为err回调参数,解析值成为结果。)
你要做的是
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);
}
},
// Note, no callback as per documentation
collectData: ['download', async (results) => {
console.log(typeof results); // prints correct object
let res = await anHttpRequest();
if (res.response && res.response.statusCode == 200) {
// this return is equivalent to callback(null, value);
return 'fileCombined.txt';
} else if (res.response.statusCode >= 300) {
// this throw is equivalent to callback(err);
throw new Error('Request failed inside async-auto');
}
// but surely something should be here!? for status code 201-209?
}],
filterData: ['collectData', (results, filterCB) => {
doFilter(results.collectData, filterCB);
}],
})