我正在尝试模拟异步回调,它在一定的秒数内完成.我希望这些都能同时记录,从触发它们起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); });
jfriend00.. 11
使用setTimeout()
安排的东西今后一段时间.
此外,setTimeout()
是异步,你的循环不是.
var same = function(str, callback){ setTimeout(function() { callback(str); }, 3000); }
注意:您无法从异步回调中返回值,因为它是异步的.该函数same()
在实际调用回调之前完成并返回很长时间.
使用setTimeout()
安排的东西今后一段时间.
此外,setTimeout()
是异步,你的循环不是.
var same = function(str, callback){ setTimeout(function() { callback(str); }, 3000); }
注意:您无法从异步回调中返回值,因为它是异步的.该函数same()
在实际调用回调之前完成并返回很长时间.