2012-01-04 10 views
6

पर एक बार चल रहा कार्य मैं समय-समय पर नए संदेशों के लिए एक PHP स्क्रिप्ट पूछना चाहता हूं। ऐसा करने के लिए, मैं setInterval() फ़ंक्शन और AJAX का उपयोग कर रहा हूं।setInterval() केवल

$(document).ready(function(){ 

    var queryInterval = 1000; /* How fast we query for new messages */ 

    setInterval(getMessages(), queryInterval); 

    function getMessages() { 
     console.log("tick"); 
    } 

}); 

हालांकि, जब मैं जावास्क्रिप्ट कंसोल को देखता हूं, तो मैं केवल एक बार "टिक" देख रहा हूं। मैंने यह सुनिश्चित कर लिया है कि कंसोल एक ही स्ट्रिंग के किसी और लॉग को अनदेखा नहीं करता है, इसलिए यदि कोड ठीक से काम कर रहा था तो उसे प्रत्येक सेकेंड में कंसोल में "टिक" दिखाना चाहिए।

कोई भी जानता है कि यहां क्या गलत हो सकता है?

+2

वहाँ एक और सवाल सिर्फ था एक घंटे पहले की तरह। –

+0

getMessages() प्राप्त होना चाहिए संदेश – georg

+1

@ 32 बिटकिड: 'सेटटाइमआउट' और 'सेट इंटरवल' के बारे में प्रश्न काफी आम हैं। – Ivan

उत्तर

23

बदलें:

setInterval(getMessages(), queryInterval); 

करने के लिए:

setInterval(getMessages, queryInterval); 
+0

सही .... !!!! –

+0

@qwertymk लेकिन मैं उस फ़ंक्शन के लिए एक तर्क पारित करना चाहता हूं मैं this.intervall = setInterval (विंडो। बाहरी (यह), अंतराल); PLease सहायता –

+2

@JamilHneini ऐसा करते हैं: 'setInterval (function() {getMessages (arg)}, queryInterval); ' – qwertymk

1

यह कॉलgetMessages निकालें कार्यक्रम है ना। कोष्ठक निकालें।

setInterval(getMessages(), queryInterval); 

setInterval(getMessages, queryInterval); 
8

वास्तव में, setIntervalgetMessages नहीं चल रहा है सब पर (एक बार भी नहीं)। setInterval एक समारोह के लिए एक संदर्भ उम्मीद है, लेकिन आप getMessages समारोह तुरंत को क्रियान्वित कर रहे हैं और setInterval करने के लिए अपनी वापसी मान गुजर (जो undefined है)। getMessage के बाद माता-पिता यही करते हैं।

इस तरह setInterval के लिए एक संदर्भ दर्रा:

setInterval(getMessages, queryInterval); 

यह केवल जगह है कि getMessages प्रयोग किया जाता है, तो आप भी इसे इस तरह लिख सकते हैं:

setInterval(function() { 
    console.log("tick"); 
}, queryInterval); 
+0

@qwertymk निश्चित रूप से सही है लेकिन इसके लिए +1 है क्योंकि यह अधिक स्पष्ट रूप से बताता है कि कैसे सेट अंतराल हुड के नीचे काम करता है। – jsh

+0

@jsh - ठीक है, मुझे जो जवाब स्वीकार किया गया था, उसके बारे में मुझे पसंद नहीं है, जबकि सही है, यह ज्यादा नहीं सिखाता है। एक समारोह बनाम इसे क्रियान्वित करने के बीच अंतर जानने के बारे में भाषा का एक बहुत ही बुनियादी, मौलिक हिस्सा है। –

संबंधित मुद्दे