首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将获取数据返回到for循环js中的对象

将获取数据返回到for循环js中的对象
EN

Stack Overflow用户
提问于 2021-11-08 17:06:15
回答 1查看 21关注 0票数 0

我有一个小问题,我需要在for循环中加载页面时获取数据。我有一个异步函数来返回result,它从服务器返回result,但它只在console.log()中显示,但我的对象只返回promise object。有没有人能给我解释一下该怎么做?

JSON

代码语言:javascript
运行
复制
 let a = {
        createdAt: "2021-11-06T11:03:15.917+0000",
        updatedAt: "2021-11-06T11:03:15.917+0000",
        version: 0,
        scheduleDate: "2021-09-24",
        schedule: [
          {
            date: "2021-09-24",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-25",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-26",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-27",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-28",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-29",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
          {
            date: "2021-09-30",
            breakfast: 1,
            secondBreakfast: 1,
            lunch: 1,
            dinner: 1,
            supper: 1,
            prepareTime: 55,
            calorific: 33.4,
            protein: 1.1,
            fat: 0.2,
            carbohydrates: 7.1,
            roughage: 0.4,
          },
        ],
        memberId: 1,
        id: 49,
      };
 this.parseMemberScheduleData(a);
代码语言:javascript
运行
复制
 parseMemberScheduleData(aSchedule) {
      let arr = [];
      for (let i = 0; i < aSchedule.schedule.length; i++) {
        arr.push({
          data: aSchedule.schedule[i].date,
          meals: {
            breakfast: this.fetchMealDetails(aSchedule.schedule[i].breakfast),
            secondBreakfast: this.fetchMealDetails(
              aSchedule.schedule[i].secondBreakfast
            ),
            dinner: this.fetchMealDetails(aSchedule.schedule[i].dinner),
            lunch: this.fetchMealDetails(aSchedule.schedule[i].lunch),
            supper: this.fetchMealDetails(aSchedule.schedule[i].supper),
          },
          mealsId: {
            breakfast: aSchedule.schedule[i].breakfast,
            secondBreakfast: aSchedule.schedule[i].secondBreakfast,
            dinner: aSchedule.schedule[i].dinner,
            lunch: aSchedule.schedule[i].lunch,
            supper: aSchedule.schedule[i].supper,
          },
        });
      }
代码语言:javascript
运行
复制
 async fetchMealDetails(aId) {
      let requestOptions = {
        method: "GET",
        redirect: "follow",
      };
      try {
        let responce = await fetch(`${MEALS}${aId}`, requestOptions);
        let result = await responce.json();
  console.log("~ result", result);
        return result;
      } catch (err) {
        console.log(err);
      }
    },

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-08 17:26:35

因为在for循环中没有对结果进行await,所以您会得到返回的Promise

代码语言:javascript
运行
复制
 async function parseMemberScheduleData(aSchedule) {
      let arr = [];
      for (let i = 0; i < aSchedule.schedule.length; i++) {
        arr.push({
          data: aSchedule.schedule[i].date,
          meals: {
            breakfast: await this.fetchMealDetails(aSchedule.schedule[i].breakfast),
            secondBreakfast: await this.fetchMealDetails(
              aSchedule.schedule[i].secondBreakfast
            ),
            dinner: await this.fetchMealDetails(aSchedule.schedule[i].dinner),
            lunch: await this.fetchMealDetails(aSchedule.schedule[i].lunch),
            supper: await this.fetchMealDetails(aSchedule.schedule[i].supper),
          },
          mealsId: {
            breakfast: aSchedule.schedule[i].breakfast,
            secondBreakfast: aSchedule.schedule[i].secondBreakfast,
            dinner: aSchedule.schedule[i].dinner,
            lunch: aSchedule.schedule[i].lunch,
            supper: aSchedule.schedule[i].supper,
          },
        });
      }
    //I don't know the function that calls this but if this function returns everything.. you must await parseMemberScheduleData(theData)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69887254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档