我在Node中有一个JS异步函数。假设它从URL下载文件并对其进行一些操作,例如解压缩。我将其编写成这样,它可以工作,但是eslint
向我显示了一个臭味相当浓的代码: error Promise executor functions should not be async no-async-promise-executor
。因为函数体中有await fetch
,所以需要使用Async
。
我不熟练使用streams
或async/await
来自己纠正它。我想摆脱Promise,并完全使用async/await
。从 Node-15 开始,模块stream/promises
似乎是去的方式,如此评论how-to-use-es8-async-await-with-streams。在这种情况下如何使用await pipeline(...)
?也许有更好、更短的方法?
这是函数:
function doSomething(url) {
return new Promise(async (resolve, reject) => {
try {
const fileWriteStream = fs.createWriteStream(someFile, {
autoClose: true,
flags: 'w',
});
const res = await fetch(url);
const body = res.body;
body
.pipe(fileWriteStream)
.on('error', (err) => {
reject(err);
})
.on('finish', async () => {
await doWhatever();
resolve('DONE');
});
} catch (err) {
reject(err);
}
});
}
async function doSomething
对您没有任何作用...因为您返回一个Promise
,所以它应该只是function doSomething
。 - LostJon