Javascript 执行动态脚本后执行代码
以下是我获取.html文件并提取所有标记的代码:Javascript 执行动态脚本后执行代码,javascript,async-await,axios,Javascript,Async Await,Axios,以下是我获取.html文件并提取所有标记的代码: const loadApp = async () => { try { const entries = await axios.get(`http://.../index.html`); let domParser = new DOMParser(); let tempDOM = domParser.parseFromString(entries.data, 'text/html');
const loadApp = async () => {
try {
const entries = await axios.get(`http://.../index.html`);
let domParser = new DOMParser();
let tempDOM = domParser.parseFromString(entries.data, 'text/html');
tempDOM.querySelectorAll('script').forEach(script => {
if (script.src) {
const scriptElement = document.createElement("script");
scriptElement.src = script.src;
scriptElement.async = false;
document.body.appendChild(scriptElement);
}
});
console.log('Hello');
} catch (error) {
throw error;
}
};
如何确保
console.log('Hello')
在执行完上述所有脚本后将运行?上述代码确实保证了执行顺序与获取顺序相同?我相信您想要的是在scriptElement
上添加一个事件侦听器来侦听“加载”事件。大概是这样的:
const loadApp=async()=>{
试一试{
const entries=等待axios.get(`http://.../index.html`);
const domParser=新的domParser();
const tempDOM=domParser.parseFromString(entries.data,'text/html');
const scriptLoadPromises=tempDOM.querySelectorAll('script').map((script)=>newpromise((resolve)=>{
if(script.src){
const scriptElement=document.createElement(“脚本”);
scriptElement.src=script.src;
document.body.appendChild(scriptElement);
scriptElement.addEventListener(“加载”,解析);
}
否则{
解决();
}
}));
等待承诺。所有(承诺);
log('Hello');
}捕获(错误){
投掷误差;
}
};
在继续执行
console.log('hello')之前,应该等待加载所有其他脚本代码>行。我相信console.log将在上面的脚本之后执行。您甚至可以在axios通话中等待。当前它是如何执行的?@junmarcalibasjose我相信OP指的是在执行console.log('hello')之前等待脚本内容加载到页面中代码>