尝试问我的讲师并尝试上网后,我并没有真正使用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结果。
有什么问题吗?
答案 0 :(得分:-1)
您正在提供对函数对象的引用,而不是对其进行调用。
将代码行更改为
const filteredPerformance = await selectPerformanceByFestivalId();
答案 1 :(得分:-1)
我在https://plnkr.co/edit/OeJg8ISk8XHinuR3创建了一个Plunk 使用上面共享的示例代码。对现有代码进行了几处更改。
selectPerformanceByFestivalId
之前添加了异步关键字。selectPerformanceByFestivalId
中的函数sortPerformanceByFinishTime
之后添加了括号(paren)