我正在尝试模拟一个异步回调,它会在设定的秒数内执行某些操作。我希望这些都同时记录,从它们被触发时起 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/