loacSaveJava() {
const masterId = this.$route.query.uuid;
const { viewList } = this;
let queryBody = {};
viewList.forEach((ele, i) => {
if (i == 0) {
queryBody = {
uuid: ele.viewInfo.uuid,
version: ele.viewInfo.version,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
} else {
queryBody = {
kanBanId: ele.kanBanId,
pageId: masterId,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
}
this.$_api.kanbanApi
.Post({
url: "KanbanItem/updateconfig",
data: queryBody,
})
.then((res) => {
this.viewList[i].viewInfo = res.data
});
})
},
这个请求接口,才能先执行的时候使用 i不等于0里面的参数,最后一次在执行的时候才用I等于0里面的参数
async结合await 先执行所有i不为0的
async loacSaveJava() {
const masterId = this.$route.query.uuid;
const {
viewList
} = this;
let queryBody = {};
viewList.filter((item, i)) => {
return i!= 0
}).forEach((ele, i) => {
queryBody = {
kanBanId: ele.kanBanId,
pageId: masterId,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
await this.$_api.kanbanApi
.Post({
url: "KanbanItem/updateconfig",
data: queryBody,
})
.then((res) => {
this.viewList[i].viewInfo = res.data
});
})
viewList.filter((item, i)) => {
return i== 0
}).forEach((ele, i) => {
queryBody = {
uuid: ele.viewInfo.uuid,
version: ele.viewInfo.version,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
await this.$_api.kanbanApi
.Post({
url: "KanbanItem/updateconfig",
data: queryBody,
})
.then((res) => {
this.viewList[i].viewInfo = res.data
});
})
}
},
1.函数名 loacSaveJava 应该为 loadSaveJava,拼写错误。
2.函数中的 $_api 变量未被定义,可能是从其他地方引入的或未在该代码片段中给出。
把等于0的放到循环外面单独执行
【以下回答由 GPT 生成】
这段代码中存在一个循环,循环中进行了异步请求操作。问题是,当i不等于0时,使用相应的参数进行请求,最后一次请求时使用i等于0的参数。解决这个问题的方法是使用闭包将循环中的变量值保存起来。
在JavaScript中,可以使用IIFE(Immediately Invoked Function Expression)立即执行函数表达式来解决这个问题。下面是修改后的代码:
function loacSaveJava() {
const masterId = this.$route.query.uuid;
const { viewList } = this;
viewList.forEach((ele, i) => {
let queryBody = {};
// 使用立即执行函数表达式保存i的值
(function(index) {
if (index === 0) {
queryBody = {
uuid: ele.viewInfo.uuid,
version: ele.viewInfo.version,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
} else {
queryBody = {
kanBanId: ele.kanBanId,
pageId: masterId,
pageProperty: ele.viewInfo.pageProperty,
baseProperty: ele.viewInfo.baseProperty,
}
}
this.$_api.kanbanApi
.Post({
url: "KanbanItem/updateconfig",
data: queryBody,
})
.then((res) => {
this.viewList[index].viewInfo = res.data;
});
})(i);
});
}
在修改后的代码中,使用立即执行函数表达式将当前的i值传入函数内部并保存为index变量。这样就可以确保在异步请求的回调函数内部访问到正确的index值,从而解决了使用错误的参数进行请求的问题。
【相关推荐】