Javascript Axios预示着混乱
我很困惑我是如何得到所有其他信息索引的Test1结果的,所以如果Test1为true,即使Test2和Test3为null,它也会基于Test1继续打印trueJavascript Axios预示着混乱,javascript,promise,axios,Javascript,Promise,Axios,我很困惑我是如何得到所有其他信息索引的Test1结果的,所以如果Test1为true,即使Test2和Test3为null,它也会基于Test1继续打印true let info = ["Test1", "Test2", "Test3"]; isInfoAviable= (email) => { payload.info = info return axios.post(url, payload, axiosConfig).then((response) => {
let info = ["Test1", "Test2", "Test3"];
isInfoAviable= (email) => {
payload.info = info
return axios.post(url, payload, axiosConfig).then((response) => {
return response.data.isAvailable ? true : null
}).catch((error) => {
console.log(error);
});
}
for (info of infos) {
isInfoAviable(info).then((res) => {
console.log(res) // If Test1 returns true, it'll true even if Test2 is null, why?
})
}
您可以
捕获IsInfo Available
函数中的错误,因此当您执行IsInfo Available()
时,即使在IsInfo Available
中拒绝了承诺,也可以解决此问题
要解决此问题,请从isinfoviable
中删除catch
,并在调用isinfoviable()
时捕获它:
isInfoAviable(info).then(...).catch(...)
编辑:将payload.info=info
更改为payload.info=email
。也要避免使用函数范围之外的变量(例如,有效载荷
应该在IsInfo-Available
中声明)。我从IsInfo-Available中删除了捕获,并将其放入for循环,正如您所说,它仍然给出相同的输出。也许我不理解您的问题。“如果Test1返回true,它将为true”什么是true?如果我在axios.post(()=>{})中放置一个console.log(payload.info),那么payload.info将始终返回Test1,而不检查其他参数,Test1为true,因此如果我将数组重新排序为[“Test3”、“Test1”、“Test2”],它仍然只会打印Test1Oh,请尝试payload.info=email
。还应尽量避免使用函数范围之外的变量(例如,有效负载
未在isinfoviable
中声明)。