回调超时



我这里有一个小提琴

谁能帮我理解为什么第一个setTimeout工作,而不是second一个?请参阅代码注释。

在这种情况下,我想先警告I am first,然后在6秒后,它会警告Hello, sorry I am late

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);

最新更新