Node.js param没有被传递给回调函数

时间:2017-06-13 21:28:01

标签: node.js lambda alexa-skill

我正在创建一个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);
  });

}); }

1 个答案:

答案 0 :(得分:0)

在getLocation()函数中,您应该将zipcode作为第二个参数传递。你的代码将是这样的:

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