2017-06-13 84 views
0

我正在創建一個Alexa技能(Lambda函數)node.js - 我有一個問題傳遞給getLocation回調函數的「zipcode」常量,如果我輸出它將工作的郵編。Node.js參數沒有傳遞給回調函數

getLocation函數它沒有返回任何東西,我猜測這是因爲郵政編碼參數沒有正確傳遞到函數中。

沒有什麼不對的功能,因爲如果我更換

VAR URL = 「本地主機/ api.php郵編=?」 +郵編;

VAR URL = 「?本地主機/ api.php拉鍊= 41242」;或任何工作的郵政編碼。

我在做什麼錯了?

let zipcode = request.intent.slots.zipcode.value; 

      getLocation(function(location, err) { 
      if(err) { 
       context.fail(err); 
      } else { 
       options.speechText += location.distance + " miles away, 
       You can get there by going to " + location.street_address + " in " + location.city + ", " + location.state; 
       options.endSession = true; 
       context.succeed(buildResponse(options)); 
      } 
     }); 

function getLocation(callback, zipcode) { 
var url = "localhost/api.php?zip="+zipcode; 

var req = http.get(url, function(res) { 
    var body = ""; 

    res.on('data', function(chunk) { 
    body += chunk; 
    }); 

    res.on('end', function() { 
    body = body.replace(/\\/g, ''); 
    var location = JSON.parse(body); 
    callback(location); 
    }); 

    res.on('error', function(err) { 
    callback('', err); 
    }); 

}); }

+0

當你調用* *的getLocation你只傳遞一個參數 - 回調 - 這樣的*郵編*參數永遠是*不確定*。 –

+0

@JulianGoacher我應該怎麼處理呢? – koepitz

+0

好吧,如果郵政編碼類似「abc123」,那麼你想把函數調用改成'getLocation(function(location,err){/ * ... callback code ... * /,「abc123」)' - 即將其作爲函數調用的第二個參數。 –

回答

0

在getLocation()函數中,您應該將zipcode作爲第二個參數傳遞。您的代碼將是這樣的:

getLocation(function(location, err) { 
     */you code here /* 
    } , zipcode);