kal*_*ada 4 javascript reactjs axios
以下代码else在解析之前不等待部件返回数据。
这段代码我哪里出错了?
return request.get(`${<URL1>}`)
.then((res) => {
if (res1.data[0]) {
data1 = res.data[0]};
} else {
request.get(`${<URL2>`)
.then((res2) => {
data1 = res2.data
});
}
return Promise.resolve(data1);
})
Run Code Online (Sandbox Code Playgroud)
提前致谢。
圣
小智 6
那是因为你做错了:)
当程序执行遇到“异步”操作(使用 axios 发出网络请求)时,它会调度任务并继续执行以下代码行。这包括任何返回语句。
您的回报应出现在“then”子句中:
return request.get(`${<URL1>}`)
.then((res1) => {
if (res1.data[0]) {
data1 = res1.data[0]
return Promise.resolve(data1);
} else {
request.get(`${<URL2>`)
.then((res2) => {
data1 = res2.data
return Promise.resolve(data1);
});
}
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...
克林顿。
您可以在这里使用 async 和 wait ,如下所示:
async function getData() {
const firstRequest = await axios.get(`${<URL1>}`);
data1 = firstRequest.data[0];
if (!data1){
const secondRequest = await axios.get(`${<URL2>}`);
data1 = secondRequest.data;
}
return data1;
}
Run Code Online (Sandbox Code Playgroud)