Pla*_*tic 5 javascript promise async-await eslint
我有一个返回 Promise 的函数,如下所示:
async function processFolder(folder) {
return new Promise(async (res) => {
const table = {};
const list = await getHTMLlist(folder);
if (list.length === 0) res(table);
for (let i = 0; i < list.length; i++) {
await processFile(folder, list[i], table);
}
res(table);
});
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 ESLint 来警告我:
“ Promise 执行器函数不应该是异步的”,即no-async-promise-executor规则,由于 Promise 声明中的 async 关键字而引发错误。
我已经在代码的其他部分修复了同样的问题,其中 Promise 中只有一个等待,使用ESLint 文档这一页上建议的技术并在这个答案中显示,但在我的用例中我真的不知道如何重构代码以避免该错误。有任何建议欢迎提出
You*_*saf 15
您不需要自己创建新的 Promise,因为async函数总是返回 Promise。如果函数的返回值async不是 Promise,则它会隐式包装在 Promise 中。
因此,您需要删除创建新 Promise 实例的代码,并且执行器函数内的代码应位于函数的顶层processFolder。
您的代码可以简化如下:
async function processFolder(folder) {
const table = {};
const list = await getHTMLlist(folder);
if (list.length > 0) {
for (let i = 0; i < list.length; i++) {
await processFile(folder, list[i], table);
}
}
return table;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,您还应该将函数内的代码包装processFolder在一个try-catch块中,以捕获并处理该函数执行期间可能发生的任何错误。
| 归档时间: |
|
| 查看次数: |
7542 次 |
| 最近记录: |