Javascript 使用async/await in for…in循环从API调用获取_resp而不是resp响应
我有一个Vuex操作,其中我需要循环浏览对象列表,让服务通过Axios将它们发送到REST端点,然后获取Javascript 使用async/await in for…in循环从API调用获取_resp而不是resp响应,javascript,asynchronous,vuejs2,async-await,vuex,Javascript,Asynchronous,Vuejs2,Async Await,Vuex,我有一个Vuex操作,其中我需要循环浏览对象列表,让服务通过Axios将它们发送到REST端点,然后获取数据和响应。我需要这样做,我可以得到一个成功的帖子计数,这样我就可以显示一条消息。我遇到的问题是使用async/await和for…of循环 以下是我目前掌握的情况: async bulkSave({ dispatch, getters, }, item) { let saveCount = 0; // eslint-disable-next-line
数据和响应。我需要这样做,我可以得到一个成功的帖子计数,这样我就可以显示一条消息。我遇到的问题是使用async/await和for…of
循环
以下是我目前掌握的情况:
async bulkSave({
dispatch,
getters,
}, item) {
let saveCount = 0;
// eslint-disable-next-line no-restricted-syntax
for (const user of item.users) {
const resp = await tenantUserService.save({
user,
tenantCode: item.tenantCode,
skipUserCheck: true,
});
const { status, data } = resp;
if (resp.status === 201) {
saveCount += 1;
dispatch('setSaveResponse', { status, data });
}
}
dispatch('alertMessage/setApiResponse', {
resp,
component: getters.getComponent,
}, { root: true });
return resp;
},
这是我正在使用的现有函数,它一次保存一条记录:
async save({ dispatch, getters }, { service, item }) {
const resp = await service.save(item);
const { status, data } = resp;
dispatch('setSaveResponse', { status, data });
dispatch('alertMessage/setApiResponse', {
resp,
component: getters.getComponent,
}, { root: true });
return resp;
},
将此作为调用的save
服务:
static async save(item) {
const { user, tenantCode, skipUserCheck } = item;
return await super.perform(axios.post(ServiceUrlProvider.gmiUrl().concat('/tenant/').concat(tenantCode).concat('/person'), user));
}
我最初尝试使用.forEach()
,但由于async/await在forEach()
中不起作用,因此我开始尝试使用类似于[this one][1]的答案的。但是,esLint告诉我不能在循环中使用
wait,当我运行此操作时,对
tenantUserService.save()的调用只会返回
\u resp`:
我缺少什么使这项工作正常进行,以便1)保存项目,2)获得正确的响应,以便增加saveCount
并继续?我最后通过一些小调整使这项工作正常进行:
async bulkSave({
dispatch,
getters,
}, item) {
let saveCount = 0;
const usersToUpload = item.users.length;
let uploadPercentage = 0;
let resp = {};
// eslint-disable-next-line no-restricted-syntax
for (const user of item.users) {
resp = await tenantUserService.save({
user,
tenantCode: item.tenantCode,
skipUserCheck: true,
});
const { status, data } = resp;
if (resp.status === 201) {
saveCount += 1;
// Calculate the percentage of users that have been uploaded
// Used for progress bar display.
uploadPercentage = Math.round((saveCount / usersToUpload) * 100);
dispatch('setUploadProgress', uploadPercentage);
dispatch('setSaveResponse', { status, data });
}
}
dispatch('alertMessage/setApiResponse', {
resp,
component: getters.getComponent,
}, { root: true });
return resp;
},
在bulkSave
中,resp
作为for循环中的常量。。。那么在声明的循环之外返回的resp
在哪里呢?同样,从这里的观点来看。。。您的最终保存
服务实际上不需要异步/等待,因为您返回
唯一的等待
ed值。。。话虽如此,super.是否履行了
的承诺?