2014-10-11 16 views
5

मैं समारोह निम्नलिखित है:परिवर्तनीय परिभाषित क्यों नहीं किया जाता है?

$.getJSON(
        'getTerminalinsideCircle.json', 
        { 
         centerLatitude: adressMarker.getPosition().lat(), 
         centerLongitude:adressMarker.getPosition().lng(), 
         radius :radius/1000 

        }, function (data) { 
          $.each(data, function (key, val) { 
            .... 
          } 
         ) 
        } 
      ) 

मैं चाहता था ro यह refactor और यह इतना पुनर्लेखन:

$.getJSON(
       'getTerminalinsideCircle.json', 
       { 
        centerLatitude: adressMarker.getPosition().lat(), 
        centerLongitude: adressMarker.getPosition().lng(), 
        radius: radius/1000 

       }, renderTerminalOnMap(data) 
     ) 
     function renderTerminalOnMap(data) { 
      $.each(data, function (key, val) { 
         ... 
        } 
      ) 
     } 

लेकिन कंसोल में मुझे लगता है कि Uncaught ReferenceError: data is not defined

कैसे यह सही refactor करने के लिए?

उत्तर

9

उपयोग renderTerminalOnMap बजाय renderTerminalOnMap(data) कॉलबैक के रूप में।

लेखन renderTerminalOnMap(data) आप वास्तव में तुरंत data पैरामीटर है, जो एक undefined चर रहा है के साथ समारोह कहते हैं, और कॉलबैक के रूप में है कि समारोह के return value सेट करके।

जब आप कॉलबैक के रूप में कार्य करते हैं तो आपको केवल फ़ंक्शन नाम पास करना होगा, पैरामीटर getJSON फ़ंक्शन स्वयं ही प्रेषित किए जाएंगे।

 $.getJSON(
       'getTerminalinsideCircle.json', 
       { 
        centerLatitude: adressMarker.getPosition().lat(), 
        centerLongitude: adressMarker.getPosition().lng(), 
        radius: radius/1000 

       }, renderTerminalOnMap 
     ); 

     function renderTerminalOnMap(data) { 
      $.each(data, function (key, val) { 
         ... 
        } 
      ) 
     } 
+1

ohhhhh। तुम सही हो। धन्यवाद – gstackoverflow

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