Javascript SetTimeout无法在chrome代码段中工作
我正在google chrome中编写一个代码片段来聚合一些数据 由于某些原因,我的超时不起作用,这里有一个非常简单的Javascript SetTimeout无法在chrome代码段中工作,javascript,google-chrome,code-snippets,Javascript,Google Chrome,Code Snippets,我正在google chrome中编写一个代码片段来聚合一些数据 由于某些原因,我的超时不起作用,这里有一个非常简单的 let element=document.querySelector(“.element”); 让link=element.querySelector(“a”); link.click(); 设置超时(()=>{ 控制台日志(“等待”); },500); 控制台日志(“等待”); 我的输出: waiting undefined Navigated to http://127.
let element=document.querySelector(“.element”);
让link=element.querySelector(“a”);
link.click();
设置超时(()=>{
控制台日志(“等待”);
},500);
控制台日志(“等待”);
我的输出:
waiting
undefined
Navigated to http://127.0.0.1/page.html
我的预期产出是:
undefined
Navigated to http://127.0.0.1/page.html
waiting
waited
我也很奇怪,输出也会被反转
任何帮助都将不胜感激,谢谢 在链接。单击()
之后,需要很长时间才能真正浏览页面。
由于Javascript的异步特性,在真正的导航发生之前,将执行以下代码行。所以
console.log("waiting");
将会发生。但是
setTimeout(() => {
console.log("waited");
}, 500);
不会发生,因为实际导航将在500毫秒之前发生
在真正的导航之后,您的代码将消失,除非它发生
document.body.innerHTML = '' +
'<div class="element">'+
' <a href="#"></a>' +
'</div>';
let element= document.querySelector(".element");
let link = element.querySelector("a");
link.click();
setTimeout(() => {
console.log("waited");
}, 500);
console.log("waiting");
undefined
和Naviagted to…
不是日志,而是一个错误和一个操作?undefined是因为我在chrome控制台中分配了一个变量,被导航到是因为我正在使用链接更改页面。click()必须先获取页面,然后才能导航到,这是异步的。函数中的同步调用都将在该函数返回之前发生,因此undefined
log应该是最后一个同步日志。导航后,您的文档将被删除,与之关联的所有计时器将被取消。
waiting
undefined
waited