javascript - 如何在 promise 中使用 `await fetch()` ,以免违反 `no-async-promise-executor` ?

标签 javascript eslint

我的代码违反了 eslint 规则 no-async-promise-executor但我不知道如何重构它,以便它在 new Promise(async (resolve,reject) => {}); 中没有 async陈述。我的代码充满了这些,我想这会导致编译器无法捕获错误。我需要一些帮助才能更好地理解这个问题

这是一个示例函数:

updateUser = () => {
    return new Promise(async (resolve, reject) => {
        try {
            const url = "/getUser";
            const response = await fetch(url);
            if (response.ok) {
                const user = await response.json();
                //
                // Do something with user object...
                //
            } else {
                console.log("response", response);
                window.location = "/admin";
            }
            resolve();
        } catch (error) {
            console.log("error: ", error);
            reject(error);
        }
    });
};

最佳答案

当你将函数标记为异步时,它会自动将返回值包装在一个 Promise 中,无论你从函数返回什么......它将被传递给 .then() ,并且无论在异步函数中抛出什么都会得到传递给您的错误处理程序,例如 .catch()

这是您可以执行的操作的示例。

const updateUser = async () => {
    const url = "/getUser";
    let response;

    try {
        response = await fetch(url);
    } catch (error) {
        throw new Error(error);
    }

    return response;
}

您还可以显式引用全局 Promise 以在异步函数内返回或拒绝值。

const updateUser = async () => {
    const url = "/getUser";
    let response;

    try {
        response = await fetch(url);
    } catch (error) {
        Promise.reject(error);
    }

    return Promise.resolve(response);
}

关于javascript - 如何在 promise 中使用 `await fetch()` ,以免违反 `no-async-promise-executor` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478783/

相关文章:

javascript - JQuery - 将表单数据序列化为关联数组

javascript - 如何让 ESLint 对 VSCode 中的 HTML 文件进行 lint?

javascript - 创建 ESLint CLIEngine 时出现问题

javascript - React linter 警告 : unused state field -- while the state field is being used in setState

webstorm - WebStorm 中的 ESLint

javascript - 在路由更改时更改状态 Next.js

javascript - 为移动应用柏树或鸦片测试自动化工具之间有何更好的选择?

javascript - EJS 使用获取的 json 数据和 d3 图表

javascript - 如何测试字符串是否有数组条目

javascript - 如何让 ESLint --fix 也运行 prettier --write