我正在将一些功能转换为异步等待,需要帮助来解决错误。
之前
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);
};
};
};
运行新代码时出现错误,我们将不胜感激。
答案 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();