Javascript 链接axios请求
问题 我使用axios向API发布多个请求,这些请求到达API的顺序很重要。即使请求以正确的顺序发送,它们在API层上的处理顺序也是错误的(响应以错误的顺序发回) e、 我先发送请求A,然后发送B,但先收到响应B,然后发送A 我目前正在做什么Javascript 链接axios请求,javascript,redux,axios,Javascript,Redux,Axios,问题 我使用axios向API发布多个请求,这些请求到达API的顺序很重要。即使请求以正确的顺序发送,它们在API层上的处理顺序也是错误的(响应以错误的顺序发回) e、 我先发送请求A,然后发送B,但先收到响应B,然后发送A 我目前正在做什么 const requests = request.map(req => { return post<void>(url, params) .then(response => { console.log(`
const requests = request.map(req => {
return post<void>(url, params)
.then(response => {
console.log(`response sent`);
})
.catch(err => {
console.log(`Response not sent`, err);
});
});
await Promise.all(requests);
const requests=request.map(req=>{
返回帖子(url,参数)
。然后(响应=>{
log(`response sent`);
})
.catch(错误=>{
log(`Response not sent`,err);
});
});
等待承诺。所有(请求);
您必须创建严格有序的数组来解决问题。
请参考以下内容:
const [first, ...others] = request
const makeRequest = ({ url, params }) => post<void>(url, params)
.then(response => {
console.log(`response sent`)
})
.catch(err => {
console.log(`Response not sent`, err)
})
const requests = others.reduce((promise, req) => {
return promise.then(() => makeRequest(req))
}, makeRequest(first))
await requests
const[first,…others]=请求
constmakerequest=({url,params})=>post(url,params)
。然后(响应=>{
console.log(`response sent`)
})
.catch(错误=>{
日志(`Response not sent`,err)
})
const请求=其他。减少((承诺,请求)=>{
返回承诺。然后(()=>makeRequest(req))
},makeRequest(第一个))
等待请求
如果成功,这将把每个请求链接到上一个请求上
注意:我假设
url
和params
是请求上的值,因为我在代码中看不到它们来自哪里。这将帮助您解决问题。只需将B req放入中,然后的A!如何知道数组是否严格有序?第二,我想我没有说清楚。如果我先发送请求A,然后发送请求B,我知道A在发送请求B之前已经被API处理过,这一点很重要。例如,如果我这样做了,请等待post(APIpath、params)等。这将确保在发布下一个请求之前收到响应。