盡管它在異步函式中,但我的awaitfor asyncCall()to finish 在inputEntriesNotOnScreen函式中不起作用。我收到此錯誤:
未捕獲的 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'));
});
}
uj5u.com熱心網友回復:
您正在創建一個函式來傳遞給您forEach的不是async.
forEach用標準for回圈替換應該允許您await根據需要使用。
提醒一下,如果您在forEach異步中創建函式,例如forEach(async function(item, index),您將能夠await在函式內部使用,但所有回呼將并行運行(到達等待后),您將沒有辦法等待他們。
https://jsfiddle.net/8nwdus0h/
有關更多資訊,您可以閱讀在 forEach 回圈中使用 async/await
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323492.html
標籤:javascript 异步 异步等待
