[英]How to make call back for async/await function
我在 JavaScript 中的異步函數讀取一個文件,然后將結果放入特定的 div。
async function loadContent( id, file ) {
var response = await fetch( file );
var text = await response.text();
document.getElementById( id ).innerHTML = text;
}
我現在這樣使用它:
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable");
但是當我嘗試獲取變量時它不起作用
var myvar = $("pagesmaxspan").textContent; // <<--- this does not work
延遲它看起來像這樣:
var myvar = "";
setTimeout(function() {
myvar = $("pagesmaxspan").textContent;
}, 100);
如何在不使用setTimeout
情況下執行此操作?
當您調用loadContent
那里沒有await
,因此您只需從async
函數中獲得一個 Promise,然后代碼繼續執行。
這就是為什么上面@Patrick 的建議有效的原因,將您之后需要執行的代碼放在then
。
要為@kshetline 答案提供示例,這應該有效。
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable")
.then(() => {
console.log($("pagesmaxspan").textContent);
})
將回調添加到函數loadContent
async function loadContent( id, file, callBack = false) {
var response = await fetch( file );
var text = await response.text();
document.getElementById( id ).innerHTML = text;
//check if callback is function
if (callBack && callBack.constructor && callBack.call && callBack.apply)
{
callBack();
}
}
用它來稱呼它
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable",
function(){
var myvar = $("pagesmaxspan").textContent;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.