Bir web uygulamasında mevcut kodlara bakıyorum. Bunu görene:SetTimeout, gecikme olmadan, işlevi anında yürütmekle aynı mıdır?
window.setTimeout(function() { ... })
sadece hemen fonksiyon içeriği yürütme olarak bu aynı mıdır?
Bir web uygulamasında mevcut kodlara bakıyorum. Bunu görene:SetTimeout, gecikme olmadan, işlevi anında yürütmekle aynı mıdır?
window.setTimeout(function() { ... })
sadece hemen fonksiyon içeriği yürütme olarak bu aynı mıdır?
Her ikisi de hemen çalıştırılmayacaktır, ne de gecikmeyi açıkça 0'a ayarlamayacaktır. Bunun nedeni, setTimeout'un işlevi yürütme sırasından kaldırmasıdır ve yalnızca JavaScript geçerli yürütme kuyruğuyla bittikten sonra çağrılır.
console.log(1);
setTimeout(function() {console.log(2)});
console.log(3);
console.log(4);
console.log(5);
//console logs 1,3,4,5,2
daha fazla detay http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/
setTimeout
'un kullandığı minimum bir gecikme vardır (HTML5'e göre 4ms, Firefox 3.6 10ms kullanır). Mozilla Geliştirici Merkezi documentation page'da bir tartışma var.
Aslında, doğru bir açıklama için diğer cevaplara bakın! – Qwerty
Sen milisaniye parametresi yok ...
setTimeout(function() { /*something*/ }, 0);
0 0 gecikmeyi ayarlar ama ne Ve olduğu için fonksiyon tarayıcı yürütme listesinin "sıra atlamak" bırakmaktır. Tarayıcıda, sayfada nesne oluşturma gibi bir çok şey vardır ve bunu çağırarak, tarayıcınızda birkaç döngü olduğu sürece işleviniz çalışır.
Bu soru ... başlıkta verilen gecikme olmadığı zaman ne olacağını soruyor :) –
Tamam tamam. Çeşitli belgeler, gerekli bir parametre olduğunu belirttiği için bir sözdizimi hatası olduğunu düşündüm. Sonra çabucak denedim ve işe yaradı. – Gary
İkinci parametre (artık değil?) Gerekli https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout –
Aishwar bakınız için, sen angusC cevabını kabul olabilir? Kabul ettiğin şey tam olarak doğru değil, ve angusC nedenini gösteriyor. – Lynn