Javascript 如何对异步/等待函数进行回调
JavaScript中的异步函数读取一个文件,然后将结果放入特定的div中Javascript 如何对异步/等待函数进行回调,javascript,async-await,Javascript,Async Await,JavaScript中的异步函数读取一个文件,然后将结果放入特定的div中 async function loadContent( id, file ) { var response = await fetch( file ); var text = await response.text(); document.getElementById( id ).innerHTML = text; } 我现在这样使用它: loadContent("pagesmaxspan",
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");
如果不使用
setTimeout
,如何执行此操作?将回调添加到函数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;
});
loadContent(“pagesmaxspan”和“./export/“+``+.”变量“,
函数(){
var myvar=$(“pagesmaxspan”).textContent;
});
当您调用loadContent
时,那里没有wait
,因此您只需从async
函数获得一个承诺,代码执行就会继续
这就是为什么上面@Patrick的建议是有效的,将您以后需要执行的代码放在
中,然后为@kshetline答案提供一个示例,这应该是有效的
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable")
.then(() => {
console.log($("pagesmaxspan").textContent);
})
loadContent(“pagesmaxspan”,“export/“+``+.”变量)
.然后(()=>{
log($(“pagesmaxspan”).textContent);
})
loadContent(…)。然后(callbackfunctionhere)
,还有$(“pagesmaxspan”)
这会查找一个名为pagesmaxspan
的元素,即
您是否真的将这样的元素添加到页面中,或者您是否打算使用类或其他选择器?真的,这么简单?!Thnaks,我来试试。不,不要在返回承诺的函数中添加回调参数。“检查回调是否为函数”-为什么不直接使用typeof
?!这是正确的答案吗?我很困惑。。我现在应该用什么,@Mouser的例子很好地解决了。。他的解决方案有什么问题?@Miger IMHO,在异步函数中有一个回调(它像所有异步函数一样返回一个承诺),在大多数情况下是不好的做法。它增加了冗余和混乱。使用承诺,代码更短,更灵活:使用鼠标器
代码本身就是错误的吗?我还是很困惑。。。
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable",
function(){
var myvar = $("pagesmaxspan").textContent;
});
loadContent("pagesmaxspan", "../export/" + `<?php echo $randomid ?>` + ".variable")
.then(() => {
console.log($("pagesmaxspan").textContent);
})