Tüm bu hattı:
Spire.Rotator.rotate().defer(5000);
yanlıştır. rotate
'dan hemen sonra parantezler nedeniyle, fonksiyonunuz kendini tekrar tekrar tekrar çağırıyor (sonsuz yineleme). Parantezlerin kaldırılması bu sorunu çözecektir, ancak kod muhtemelen çalışmaz. kodunu çözmek için, kullanan iki argüman olarak bir işlev ve (milisaniye cinsinden) bir gecikme kabul tarayıcı en window.setTimeout
method:
setTimeout(function() {
Spire.Rotator.rotate();
}, 5000);
Neden sadece setTimeout(Spire.Rotator.rotate, 5000);
? Nedeni, bu işlevdeki this
, Spire.Rotator
yerine window
olacaktır. (İnternette bu konuda plenty of information var.) Neden setTimeout("Spire.Rotator.rotate()", 5000);
? Bu aynı pitfalls of eval'dan muzdarip olan yöntemi kullanmak için oldukça tarihli (kullanım dışı) bir yöntem, Douglas Crockford da dahil olmak üzere bazı JavaScript programcılarının kullanılmamasını tavsiye ettiği bir işlev.
Timeout ayarlamak için dizeleri parametre olarak kullanmayın. Geçerli ama cehennemden alıntı yapmaya eğilimli ve aynı zamanda yavaş. Bunun yerine bir işlev kullanın: 'setTimeout (Spire.Rotator.rotate, 5000)' – slebetman
@slebetman Ah! Evet tabi ki. Hatırlatma için teşekkürler. :) – Alex