【问题标题】:Node.js param not being passed to callback functionNode.js 参数未传递给回调函数
【发布时间】:2017-06-15 19:56:07
【问题描述】:

我正在创建一个 Alexa 技能(Lambda 函数)node.js - 我在将“邮政编码”常量传递给 getLocation 回调函数时遇到问题,如果我输出邮政编码它将起作用。

getLocation 函数没有返回任何内容,我猜这是因为邮政编码参数未正确传递到函数中。

这个功能没有问题,因为如果我更换了

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);
  });

}); }

【问题讨论】:

  • 当您调用 getLocation 时,您只传递一个参数 - 回调 - 所以 zipcode 参数将始终为 undefined .
  • @JulianGoacher 那我该如何处理呢?
  • 好吧,如果邮政编码类似于“abc123”,那么您想将函数调用更改为getLocation(function(location, err) { /*... callback code ... */, "abc123") - 即将它作为函数调用的第二个参数包含在内。
  • 成功了,谢谢! @JulianGoacher

标签: node.js lambda alexa-skill


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多