Kapanışta tryMe
'u kapatabilirsiniz. Örneğin
: Burada
var f = function(){tryMe('some parameter');};
setTimeout(f, 200);
, istenilen parametre (ler) ile tryMe
çağıran bir işlev nesnesini f
oluşturmak. Sonra f
setTimeout
'a geçeriz. Zaman aşımı süresi dolduğunda, tryMe
'u istenilen parametrelerle arayacak olan f
çağrılır. Bunu gibi bu değişkenleri bağlamak isteyeceksiniz:
Uyarı bir kelime Eğer zaman aşımı önce değişebilir parametrelerinde geçmesine istiyorsanız (bir for
döngü içinde birkaç zaman aşımları ayarlarken örneğin,) çağrılan
bunun yerine fonksiyon nesnenin
tryMe
kendisinin
tryMe
değerlendirerek sonucunu geçiyoruz çünkü
var f = function(someParamter){return function(){tryMe(someParameter);};};
setTimeout(f(someParameter), 200);
basitçe çalışmaz
setTimeout(tryMe('some parameter'), 200); //Does not work.
böyle bir şey yaptığını nedenidir.
İşlev değerlendirildiği ve işlevin sonucu "setTimeout" öğesine iletildiği için yürütülür; Fonksiyonun kendisi beklediğiniz gibi geçmez. – Marc
Yaptığınız şeyi "parantez olmadan bir işlev çağırmak" olarak tanımlamak doğru değil. Sorunuzda gönderdiğiniz ifadede işlev çağrılmaz.Bunun yerine, işlevin * bir * referansı başka bir işleve ('setTimeout') aktarılır, ki bu bir süre sonra (200 milisaniye sonra) fonksiyonunuzu ** ** parantez ile (kavramsal olarak) çağırır. Yine de, burada sorduğunuz şey çok yaygın bir karışıklık noktasıdır ve cevap pek açık değildir. – Pointy
@Olumum Bana açıkladığınız için teşekkürler =) – Tsundoku