模块的顶层主体async/await语法错误



我的awaitasyncCall()完成在inputEntriesNotOnScreen函数不工作,尽管它是在一个异步函数。我得到这个错误:

Uncaught SyntaxError: await只在异步函数和模块的顶层体中有效

错误的第二部分是什么意思?

function resolve1MS() {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
}, 1);
});
}
async function asyncCall() {
let clicked = false;
while( !clicked){
await resolve1MS();
if($('.ui-menu-item').length != 0){
$('.ui-menu-item')[0].click();
clicked = true;
$matrix = $("table.timesheet tbody tr");
return {
lastRow: $matrix.last()
}
}
}
}
async function inputEntriesNotOnScreen($matrix, notFoundInInitialSearch){
let lastRow = undefined;
notFoundInInitialSearch.forEach(function(item, index){
console.log(item, index);
if( lastRow == undefined){
lastRow = $matrix.last();
}
else{
lastRow = await asyncCall();
}
lastRow.find('.search')[0].click();
let $searchBar = $('.ui-autocomplete-input');multiple times
$($searchBar[index]).val(item[0][0]);
$searchBar[index].dispatchEvent(new Event('input'));
});
}

您正在创建一个函数传递给您的forEach,而不是async

forEach替换为标准的for循环应该允许您根据需要使用await

作为提示,如果你使forEach中的函数异步,就像forEach(async function(item, index)一样,你将能够在函数中使用await,但是所有的回调将并行运行(在到达await之后),并且你将没有办法等待它们。

https://jsfiddle.net/8nwdus0h/

有关更多信息,请参阅使用async/await与forEach循环

相关内容

  • 没有找到相关文章

最新更新