下面是我的代码:
<script src='app.js' defer></script> //very big js file
//lots of html stuff
<script> alert(1);</script>问题是,这些是异步加载的。有没有办法等到第二个脚本加载完第一个脚本?
发布于 2018-10-03 21:02:31
如果您使用jQuery,有一种非常简单的方法可以通过getScript函数完成此操作。只需在加载后添加需要执行的脚本部分,并将其作为参数传递给函数。
$.getScript( "app.js" )
.done(function( script, textStatus ) {
console.log( textStatus );
//your remaining code
})
.fail(function( jqxhr, settings, exception ) {
//script fail warning if you want it
});发布于 2018-10-03 21:01:57
Defer指示在页面加载之前不执行script标记的内容。因此,我实际上希望首先弹出警报,然后加载app.js。
在没有延迟的情况下,脚本应该按照您放置的顺序同步加载。
发布于 2018-10-03 21:13:53
您可以通过async-await实现这一点
创建一个JavaScript函数,将它们都包装起来。
const task1 = ()=>{
// app.js content
}
const task2 = ()=>{
// alert(1);
}
async function asyncCall(){
await task1(); // then task2 want start until the task1 finishes
task2();
};
asyncCall();您可以使用异步函数一个接一个地异步执行一个函数
其他资源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
您也可以使用JavaScript Promises解决相同的问题,但我更喜欢异步等待函数。它们不那么痛苦。
https://stackoverflow.com/questions/52627575
复制相似问题