2010-07-11 14 views
5

यदि वैश्विक चर लोड हो तो मैंने प्रत्येक 100 एमएस की जांच के लिए जावास्क्रिप्ट फ़ंक्शन में एक बना दिया है। जब वेरिएबल लोड हो जाएगा तो फ़ंक्शन वैरिएबल का मान नीचे दिखाएगा जैसा कि नीचे दिखाया गया है। मेरे कोड में मैं जावास्क्रिप्ट, में एक HTTP सर्वर का उपयोग करता हूं और चर 0 लोड हो जाएगा जब विशिष्ट हेडर के साथ एक विशिष्ट HTTP अनुरोध मेरे सर्वर पर पहुंच जाएगा।सेटटाइमआउट के साथ प्रतीक्षा करने के लिए कैसे एक चर लोड हो जाता है और साथ ही, HTTP अनुरोध प्राप्त करें!

function checkVariable() 
{ 
    if (myvar != null) 
    { 
      return myVar; 
    } 
    else 
    { 
      window.setTimeout("checkVariable();",100); 
    } 
} 

मैं इस तरह कोड का एक टुकड़ा में इस समारोह का उपयोग करें:

// arithmetis operations... [1] 

myVar = checkVariable(); 

// arithmetic operations that use myVar [2] 

myVar अशक्त के साथ शुरू किया गया है। समस्या यह है कि [2] में अंकगणितीय परिचालन मेरे वायर के मूल्य से पहले किए जाते हैं। इसके बजाए, मैं चाहता हूं कि मेरा कोड तब तक प्रतीक्षा करे जब तक कि मेरा वीर प्राप्त न करे, और उसके बाद संचालन जारी रखें।

सेटटाइमआउट फ़ंक्शन का प्रयास करने से पहले, मैंने थोड़ी देर के लूप का उपयोग करके कोड को प्रतीक्षा करने का प्रयास किया, लेकिन तब समस्या यह थी कि HTTP सर्वर को लगातार लूप के निरंतर निष्पादन के कारण कोई HTTP अनुरोध प्राप्त नहीं हो सका!

क्या कोई इस समस्या को हल करने में मेरी सहायता कर सकता है?

अग्रिम धन्यवाद!

उत्तर

11

मैं शायद शेष अंकगणितीय परिचालन को कॉलबैक कर दूंगा। कुछ की तरह:

function checkVariable() 
{ 
    if (myvar != null) 
    { 
      computeVariable(myVar); 
    } 
    else 
    { 
      window.setTimeout("checkVariable();",100); 
    } 
} 

तब:

// arithmetis operations... [1] 

myVar = checkVariable(); 

function computeVariable(myVar) { 
    // arithmetic operations that use myVar [2] 
} 
+0

आप jpoz धन्यवाद! यह एक अच्छा विचार है! मैं इसे आजमाऊंगा! हालांकि मैं ऐसे समाधान को पसंद करूंगा जो कॉलबैक का उपयोग न करे, क्योंकि गणना के बाद मैं कई बार पूरी प्रक्रिया को दोहराना चाहता हूं। यही है, MyVar को फिर से बनाने के लिए और मौसम की जांच करने के लिए कुछ अन्य मूल्य इसे लोड किया जाता है, ताकि अन्य परिचालनों को पूरा किया जा सके .. –

+0

विधि नाम के लिए एक स्ट्रिंग का उपयोग करने से बचने के लिए सबसे अच्छा है क्योंकि यह कुछ बुरा eval () कोड। – Yoda

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

  • कोई संबंधित समस्या नहीं^_^