Javascript 使用async/await in for…in循环从API调用获取_resp而不是resp响应

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

我有一个Vuex操作,其中我需要循环浏览对象列表,让服务通过Axios将它们发送到REST端点,然后获取
数据和
响应。我需要这样做,我可以得到一个成功的帖子计数,这样我就可以显示一条消息。我遇到的问题是使用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.是否履行了
的承诺?