2017-06-13 265 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);