JavaScript 异步事件

标签 javascript asynchronous callback

我试图理解回调,所以我创建了一个测试代码来检查异步行为。

function wait() {
while (new Date() < 2000 + new Date().getTime()){}
console.log("end");
}

console.log("start");
wait();

function clicke(){
console.log("click!")
}

document.addEventListener('click', clicke);

因此,我希望记录 start 然后 clicks 当我执行它们时,2 秒后 end。但问题是所有事件通知都在打印出 startend 之后。 我做错了什么?

最佳答案

JavaScript 是单线程的,while 循环会阻塞线程。在 while 循环中忙等待两秒钟后,它会处理您正在创建的事件。要在两秒内记录一条消息,请执行以下操作:

setTimeout(function(){console.log("message")}, 2000);

参见 https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout

关于JavaScript 异步事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31927639/

相关文章:

javascript - Office Excel JS - 更改表格对象的范围值

c# - Entity Framework 中的异步等待支持?

c# - 为什么我的程序的异步版本比同步版本慢?

javascript - 调用函数洞察函数/参数

javascript - php脚本没有正确接收文件

javascript - 将 JSX 转换为 JSON 或 String,然后再转换回来

javascript - 使用 jquery 使动画异步/同步的干净方法

Android:在 WebView 中单击会导致回调到 Android 应用程序

javascript回调上下文问题

javascript - 为什么我不能从对象字面量内部引用对象字面量?