将函数转换为异步等待

时间:2018-08-15 20:28:52

标签: javascript promise async-await

我正在将一些功能转换为异步等待,需要帮助来解决错误。

之前

const getRequest = (url, headers) => {
    return new Promise((resolve, reject) => {
        axios.get(url, { headers })
            .then((res) => {
                return resolve(res);
            })
            .catch((err) => {
            return reject(err);
        });
});

之后

async function getRequest(url, headers) {
    return new Promise(resolve, reject) {
        try {
            const res = await axios.get(url, { headers })
                return resolve(res);
            }
        catch(err){
                return reject(err);
            };
    };
};

运行新代码时出现错误,我们将不胜感激。

3 个答案:

答案 0 :(得分:2)

async function getRequest(url, headers) {
    const res = await axios.get(url, { headers })
    return res;
};

答案 1 :(得分:2)

首先,您的原始代码缩进得很厉害,所以让我们修复一下:

Julia 1.0

第二,您的原始代码包含很多不必要的代码,因为const getRequest = (url, headers) => { return new Promise((resolve, reject) => { axios.get(url, { headers }) .then((res) => { return resolve(res); }) .catch((err) => { return reject(err); }); }); 已经是一个承诺。这表明对诺言如何运作缺乏理解,请阅读this list of anti-patterns。您应该直接退还诺言。解决该问题:

axios.get

第三,将一个函数转换为const getRequest = (url, headers) => { return axios.get(url, { headers }); }); 时,该函数已经返回了Promise,无非就是简单地添加async关键字本身。您无需对该功能做任何事情。最终结果:

async

答案 2 :(得分:0)

首先,在声明诺言时遇到语法错误。

getRequest函数应如下所示-

async function getRequest(url, headers) {
    return new Promise((resolve, reject) => {
        try {
            const res = await axios.get(url, { headers })
            return resolve(res);
        }
        catch (err) {
            return reject(err);
        };
    });
};

第二,id axios.get(url, { headers })是可以豁免的,您不需要从父功能返回诺言。 您可以简单地返回await axios.get(url,{headers});

async function getRequest(url, headers) {
    return await axios.get(url, { headers });
};
  

示例

async function parent() {
    console.log(await child(true));
}


function child(data) {
    return new Promise((resolve, reject) => {
        if (!!data) {
            resolve("resolved!");
        } else {
            reject("rejected!");
        }
    });
}

parent();

相关问题