javascript - 模拟定时异步调用

标签 javascript asynchronous sleep

我正在尝试模拟一个异步回调,它会在设定的秒数内执行某些操作。我希望这些都同时记录,从它们被触发时起 3 秒。现在他们连续记录 3 秒。 sleep 功能阻止整个脚本运行。知道为什么吗?

function sleep(delay) {
  var start = new Date().getTime();
  while (new Date().getTime() < start + delay);
}

var same = function(string, callback) {
  new sleep(3000);
  return callback(string);
}

same("same1", function(string) {
  console.log(string);
});
same("same2", function(string) {
  console.log(string);
});
same("same3", function(string) {
  console.log(string);
});

最佳答案

使用 setTimeout() 为 future 的时间安排一些事情。

此外,setTimeout() 是异步的,您的循环不是。

var same = function(str, callback){
    setTimeout(function() {
        callback(str);
    }, 3000);
}

注意:您不能从异步回调中返回值,因为它是异步的。函数 same() 在实际调用回调之前很久就完成并返回。

关于javascript - 模拟定时异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20334486/

相关文章:

javascript - 跨浏览器确定Javascript垂直滚动百分比的方法

python - 在 python 中精确 sleep

javascript - 使用闭包/函数绑定(bind)将 self 函数作为回调传递

c# - SignalR OnConnected() 中的异步方法

asynchronous - 如何在 Playground 中运行异步回调

python - 异步事件循环如何知道等待资源何时准备就绪?

Java 线程 - CPU 使用率

vbscript - wscript.sleep在错误的时间发生

javascript - JQuery:如何遍历一个div的所有子元素

javascript - 如何利用 FuelUX DataGrid "loaded"事件?