【发布时间】:2021-01-22 13:28:13
【问题描述】:
我有一个返回 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);
});
}
我正在使用 ESLint 警告我:
"Promise executor functions should not be async" 这是 no-async-promise-executor 规则,由于 Promise 声明中的 async 关键字而引发错误.
我已经使用 ESLint 文档的this 页面上建议的技术并在this 答案中显示的技术在代码的其他部分修复了相同的问题,但在我的使用中案例我真的不知道如何重构代码以避免该错误。欢迎任何建议
【问题讨论】:
-
你为什么用 promise 构造函数包裹
await getHTMLlist(folder)和await processFile(folder, list[i], table);?async函数已经返回了一个承诺,所以你不需要创建一个新的并返回它 -
该函数读取并解析给定文件夹,循环遍历文件夹内的所有文件,收集将存储在对象“表”中的一些数据。当文件夹中的每个文件都被读取时,这个承诺就完成了。然后通过“表”作为参数来解决承诺
-
@Lux 不幸的是,不,我知道这个问题,我阅读了它并将答案应用于我的代码中的不同用例,但是在这种情况下,我必须处理 Promise 中的几个等待,其中一些它们在循环中生成。答案很简单,但与那个问题无关
标签: javascript promise async-await eslint