在此处输入代码,其中包含我想要在 redux 表单提交上将每个值发布到 axios api 的复选框的表单列表,在下面的代码中我显示了提交功能,
值={示例1:true,示例2:true,示例3:false,示例4:true} 我的代码中的预期输出打印每个键然后发布它 但现在它这样做 将执行循环和控制台(example1,....,example4),此后将为同一个键调用帖子 4 次
submit(values) {
let data={
"status":"INVITED",
"buyerId": localStorage.getItem("companyId"),
"joinType": "B",
"supplierId": ""
}
for (var key in values) {
if (values[key]) {
data.supplierId=key
console.log(key)
postWithAuth("networkmgtservice/api/networks",data).then((response) => {
let status=response.data.statusCode;
if(status="000"){
console.log(key)
$(`#${keyVar}`).html("Successfully sent")
}
else if(status=="999"){
$(`#${keyVar}`).html(response.data.errorDescription)
}
})
.catch((error) => {
console.log(error)
})
}
最佳答案
当您在循环内执行异步任务时,不要使用 var
声明循环变量,因为 var
声明的变量不会保持其状态并更新为循环中的最后一个值因为循环总是比 API 调用更快,因此循环变量将仅保留映射中最后一项的值。相反,使用 let
来声明循环变量,因为它们维护状态。
submit(values) {
let data={
"status":"INVITED",
"buyerId": localStorage.getItem("companyId"),
"joinType": "B",
"supplierId": ""
}
for (let key in values) {
if (values[key]) {
let requestData = {...data};
requestData.supplierId=key
console.log(key)
postWithAuth("networkmgtservice/api/networks",requestData)
.then((response) => {
let status=response.data.statusCode;
if(status="000"){
console.log(key)
$(`#${keyVar}`).html("Successfully sent")
}
else if(status=="999"){
$(`#${keyVar}`).html(response.data.errorDescription)
}
})
.catch((error) => {
console.log(error)
})
}
}
关于javascript - 在提交 redux 表单时循环 axios post 获取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54676393/