2012-08-27 70 views
0

您好,我正在嘗試獲取每個循環的位置。 Yahoo Placemaker用於從數組的文本變量中獲取位置。在每個循環中,都將位置發送到外部函數,但我沒有獲取值。有誰知道做錯了什麼?謝謝!從異步回調中獲取值

function replace_undefined(array, text_array) { 
     console.log(text_array); 
     for (i = 0, l = text_array.length; i < l; i++) { 
      var text = array[i].text; 
      Placemaker.getPlaces(text, function (o) { 
       console.log(o); 
       if ($.isArray(o.match)) { 
        if (o.match[0].place.name == "Europe" || o.match[0].place.name == "United States") { 
         var location = o.match[1].place.name; 
         getLocation(location); 
        } 
        if ($.isArray(o.match)) { 
         if (o.match[0].place.name !== "Europe") { 
          var location = o.match[0].place.name; 
          getLocation(location); 
         } 
        } 
       } 
       if (!$.isArray(o.match) && o.error == "no locations found") { 
        var location = ""; 
        getLocation(location); 

       } 
       if (!$.isArray(o.match) && o.error !== "no locations found") { 
        var location = o.match.place.name; 
        getLocation(location); 
       } 
      }); 
     } 

     function getLocation(n) { 
      return function() { 
       console.log('Location: ' + n); 
      }; 
     } 


    } 
+0

我沒有時間來進一步幫助你,但你知道你正在使用[strict(un)equality](http://jonkruger.com/blog/2009/04/07/strict- equals-triple-equals-operators-in-javascript /)這裏'!==',不是嗎? –

+0

是的,我知道@MarceloAssis –

回答

0

你的問題並不完全說明問題出在哪裏;我假設它在撥打getLocation

我立即注意到的一件事是,getLocation返回一個函數,所以只是做getLocation(location);是不會做任何事情,除了返回該函數。您需要執行(getLocation(location))();才能實際調用getLocation()返回的功能。

是否有一個原因,你從getLocation返回一個函數?

+0

我實際上試圖將位置存儲回陣列的相應用戶,但我不知道如何做到這一點。 –

+0

功能的getLocation(位置){ \t \t \t \t \t \t \t \t \t \t \t \t回報函數(){ \t \t \t \t \t \t loc.push(位置); \t \t \t \t \t \t \t console.log(loc); \t \t \t \t \t \t}; \t \t \t \t \t \t \t}是否有替代這些值而不在功能@Vivin Paliath創建一個陣列,每個時間的任何其他方式?乾杯 –