Javascript回调超时
我有一把小提琴 有人能帮我理解为什么第一个Javascript回调超时,javascript,callback,Javascript,Callback,我有一把小提琴 有人能帮我理解为什么第一个setTimeout有效,而第二个无效吗?请参阅对代码的评论 在这种情况下,我想先提醒我是第一个,然后在6秒钟后,它会提醒你好,对不起,我迟到了 function iAmTakingTooLong(message1, message2, callback){ //setTimeout(function(){ alert('test'); },6000); //THIS WILL WAIT FOR 6000 MILLISECONDS
setTimeout
有效,而第二个无效吗?请参阅对代码的评论
在这种情况下,我想先提醒我是第一个
,然后在6秒钟后,它会提醒你好,对不起,我迟到了
function iAmTakingTooLong(message1, message2, callback){
//setTimeout(function(){ alert('test'); },6000); //THIS WILL WAIT FOR 6000 MILLISECONDS
setTimeout(callback(message1+message2),6000); //THIS WILL NOT WAIT FOR 6000 MILLISECONDS
}
iAmTakingTooLong('Hello, ', 'sorry I am late!', function(fullmessage){
alert(fullmessage);
});
alert("I am first!");
在此代码中:
setTimeout(callback(message1+message2),6000);
您正在调用参数列表中的回调函数。JavaScript在调用函数之前评估函数参数,因此实际传递给setTimeout()
的是回调函数返回的内容
你需要像这样的东西:
setTimeout(function() { callback(message1 + message2); }, 6000);
这里的行为不是JavaScript独有的。谢谢,伙计,我只是想知道,因为我认为回调已经是一个函数,不需要将它放在function(){}
中,在调用setTimeout()之外,您希望callback(message1+message2)
做什么
?我希望在不将回调(message1+message2)
放入函数({}
中的情况下,它只会在指定的时间后调用回调。但情况似乎并非如此。非常感谢。