异步/等待根本不返回结果

时间:2020-07-04 13:21:23

标签: javascript async-await

尝试问我的讲师并尝试上网后,我并没有真正使用async / await方法。最初,我认为异步/等待可以为我的活动选择挑战带来理想的结果,但事实并非如此。

从给出的这段代码中,我试图从函数console.log()selectPerformanceByFestivalId取出结果,但是当我看到结果时,它只给我一个空对象作为结果,而不是对象数组。

对,我应该得到这样的东西:

[
  {
    "performanceid": "1234567890",
    "starttime": 1330,
    "endtime": 1530,
    "festivalid": "2234567891"
  },
  {
    "performanceid": "1234567891",
    "starttime": 1530,
    "endtime": 1630,
    "festivalid": "2234567891"
  },
  {
    "performanceid": "1234567892",
    "starttime": 1330,
    "endtime": 1530,
    "festivalid": "2234567891"
  },
  {
    "performanceid": "1234567893",
    "starttime": 1330,
    "endtime": 1530,
    "festivalid": "2234567891"
  },
  {
    "performanceid": "1234567894",
    "starttime": 1430,
    "endtime": 1530,
    "festivalid": "2234567891"
  }
]

但是我得到的结果是:{}

这是我当前的异步/等待代码:

async function sortPerformanceByFinishTime(endTime) {
    const filteredPerformance = await selectPerformanceByFestivalId;  //do a await to let the previous function execute first before continuing
    const storeArray = []   //create a new array to reorder the stuff again
    console.log(filteredPerformance);
};

这是我做我的selectPerformanceByFestivalId的方式:

// 1. selectPerformance to correctly select set of performance for computation
function selectPerformanceByFestivalId(performances) {
    const l = performances.length;  //length of performances
    const selectedPerformance = []; //create a new array selectedPerformance
    for (let i = 0; i < l; i++) {   //iterate through all the festivalId
        selectedPerformance.push(performances[i]);  //push filtered performance into the array
    };
    return selectedPerformance; //return the array
};

selectPerformanceByFestivalId应该保存整个json结果(上面的数据),当我console.log(filteredPerformance)时,我希望得到相同的json结果。

有什么问题吗?

2 个答案:

答案 0 :(得分:-1)

您正在提供对函数对象的引用,而不是对其进行调用。

将代码行更改为

  const filteredPerformance = await selectPerformanceByFestivalId(); 

答案 1 :(得分:-1)

我在https://plnkr.co/edit/OeJg8ISk8XHinuR3创建了一个Plunk 使用上面共享的示例代码。对现有代码进行了几处更改。

  1. 在功能selectPerformanceByFestivalId之前添加了异步关键字。
  2. 在调用函数selectPerformanceByFestivalId中的函数sortPerformanceByFinishTime之后添加了括号(paren)