我正在创建一个Alexa技能(Lambda函数)node.js - 我遇到了将“zipcode”const传递给getLocation回调函数的问题,如果我输出zipcode它将起作用。
getLocation函数它没有返回任何东西,我猜它是因为zipcode参数没有正确传递到函数中。
该功能没有任何问题,因为如果我更换
var url =“localhost / api.php?zip =”+ zipcode;
带
var url =“localhost / api.php?zip = 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 :(得分:0)
在getLocation()函数中,您应该将zipcode作为第二个参数传递。你的代码将是这样的:
getLocation(function(location, err) {
*/you code here /*
} , zipcode);