Soru JQuery'de setInterval ile çağrı fonksiyonu?


JQuery'de bir işleve aralıklı çağrı oluşturmaya çalışıyorum, ama işe yaramıyor! İlk sorum, jQuery ile ortak JavaScript'i karıştırabilir miyim?

Kullanmalı mıyım setInterval("test()",1000); ya da böyle bir şey:

var refreshId = setInterval(function(){
    code...
}, 5000);

Aradığım işlevi nereye koyacağım ve aralığı nasıl etkinleştiririm? JavaScript'te jQuery'ye göre bir işlevi nasıl bildireceğimiz bir fark var mı?


25
2018-03-30 09:00


Menşei


(a) jQuery olduğu JavaScript. Diye soruyorsun sanki PHP'de XYZ çerçevesini kullanırsam hala PHP kullanabilir miyim? (b) Her zaman bir işlev referansını iletin setInterval (c) Lütfen kodunuzu gönderin. Bir dizeyi setInterval Bundan daha önemli İşlevin bildirildiği yerde (global kapsamda olması gerekir) ve bu yüzden bundan kaçınmanızın nedeni de budur. - Felix Kling


Cevaplar:


En iyi kodu yazmak için, ikinci bir yaklaşımı, bir işlev referansıyla birlikte kullanmalısınız:

var refreshId = setInterval(function() {}, 5000);

veya

function test() {}
var refreshId = setInterval(test, 5000);

ama senin yaklaşımın

function test() {}
var refreshId = setInterval("test()", 5000);

temelde geçerli (olduğu sürece test() küreseldir).

"JQuery'de" gibi bir şey olmadığını unutmayın. Hala Javascript dilini yazıyorsun; jQuery kitaplığı olan önceden hazırlanmış bazı işlevleri kullanıyorsunuz.


47
2018-03-30 09:06



Hmmm, eğer var refreshId kullanırsanız = setInterval (function () {}, 5000); Her 5 saniyede çağrılacak olan fonksiyon, {} ile tek bir isimle ayrı bir işlevde değil arasında olmalıdır. Umarım ne demek istediğimi anladın mı? Başlamak istediğim, birkaç saniye sonra hareket etmek için bir kaydırıcı animasyonu. - 3D-kreativ
@ user637364: Bu doğru. İsimsiz bir işlev yaptım. - Lightness Races in Orbit
@ user637364: Sadece çağrılması gereken işlevi iletin setInterval. Fazladan bir işlev çağrısı yapabilirsiniz, ancak bu gereksiz ek yükü yaratır. - Felix Kling
Buna değer olan üçüncü örnek, JS motorunun kodu yeniden / yeniden derlemesine neden oluyor ve bu da 3 tanesi arasında daha yavaş bir yaklaşım olmasını sağlıyor. Radikal olarak farklı konsept nedeniyle, bellekte artış ve potansiyel bellek sızıntılarına karşı da hassastır. - Christian
Hıristiyan haklıdır (algılanan hız farkının 5 sn'lik bir tekrar hızında göz ardı edilebilir olmasına rağmen). - Lightness Races in Orbit


Her şeyden önce: Evet ortak JS ile jQuery karıştırabilirsiniz :)

Bir fonksiyonun intervall çağrısını oluşturmanın en iyi yolu setTimeout metodu kullanmaktır:

Örneğin, test () adında bir işleviniz varsa ve bunu 5 saniyede tekrarlamak isterseniz, bunu şu şekilde oluşturabilirsiniz:

function test(){
    console.log('test called');
    setTimeout(test, 5000);
}

Sonunda işlevi bir kez tetiklemelisiniz:

$(document).ready(function(){
    test();
});

Bu belge hazır işlevi, tüm html yüklendikten sonra otomatik olarak çağrılır.


6
2018-03-30 09:15



Neden bunu yapmak için setInterval kullanmıyorsunuz? - Richard Dalton
Her zaman olduğundan eminim ki, fonksiyonumun çağrılması her zaman istenen zamandan sonra gerçekleşir ve işlev bittikten sonra ... 5 saniye setintervall ile tamamdır ... ama daha sıkı bir zaman dilimine sahipseniz ve işleviniz tamamlanmamışsa ne olur? sonra 300ms diyelim ve fonksiyonu tekrar çağırırsınız ??? Bu arada, bu olamaz ... - ayk
jQuery olduğu ortak JS Bu sadece bir grup fonksiyon. Yeni başlayanlar, ayrı bir dil olduğunu düşünürler çünkü daha önce Javascript'i daha önce hiç yazmamışlardır (jQuery belgeleri ve örnekleri bunu kullanır). - Lightness Races in Orbit
@InfernalBadger: ayk, tekrarlar arasında bir geri sayımın yapılmasını sağlamadan önce, geri dönüşler arasında manüel bir gecikme sağlar. Bazı durumlarda bu tamamen uygundur: sadece 300ms'lik iterasyonun tamamlanması için 900 ms sürmeyeceğini unutmayın. - Lightness Races in Orbit
Evet, thats true ... ama nihayet jQ, js progging için kolay giriş sağlar, bu yüzden ... :) Ve Evet, benim yöntem ile 20 saniye sonra 4 çağrıları olmayacak ... :) o zaman olacak 20 saniye ve 4x 1 ms? : D - ayk


jQuery, Javascript'te yazılmış bir dizi yardımcı / kütüphanedir. Yine de tüm Javascript özelliklerini kullanabilirsiniz, böylece jQuery geri aramalarının içinden de her türlü işlevi arayabilirsiniz. Yani her iki olasılık da iyi olmalı.


0
2018-03-30 09:04





setInterval (function () {updatechat ();}, 2000);

updatechat işlevi () {alert ('merhaba dünya'); }


0
2017-08-07 06:09