【问题标题】:Can`t use the response from a get request using callback function [duplicate]无法使用回调函数使用获取请求的响应[重复]
【发布时间】:2018-01-29 05:19:39
【问题描述】:

我从一个 url 发出一个 get 请求,并尝试在另一个函数中进一步使用响应,所以这是我首先尝试的。

var request = require("request");

function getJSON(getAddress) {
    request.get({
        url: getAddress,
        json: true,
    }, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            return body;
        }
     })
 }

function showJSON(getAddress, callback) {
    var test = callback(getAddress);
    console.dir(test);
}

showJSON('http://api.open-notify.org/astros.json', getJSON);

然而,当我运行我的脚本时

node ./test.js 

我明白了

'undefined' as a console message

我不知道这可能来自哪里,因为我是 node.js、javascript 的新手

【问题讨论】:

  • 正如我所说,我完全不确定这是从哪里来的。我会检查这个,希望它能回答我的问题。谢谢

标签: javascript node.js callback get-request


【解决方案1】:
var test = callback(getAddress);

是一个异步函数

console.dir(test);

在执行之前不会等待它完成,因此您会变得不确定。要让它发挥作用,你必须这样做

var request = require("request");

function getJSON(getAddress, callback) {
    request.get({
        url: getAddress,
        json: true,
    }, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            callback(body);
        }
     })
 }

function showJSON(getAddress, callback) {
    callback(getAddress, function(test){
        console.dir(test);
    });
}

showJSON('http://api.open-notify.org/astros.json', getJSON);

【讨论】:

  • 知道如何修改我的代码以使其正常工作吗?
  • @MirelIonutPuchianu 你有没有看过我提供的链接?答案在里面......(提示:查看已接受的答案)。
  • 我编辑了答案以便能够打印 test 的值
  • 当奇迹回答我时,我正在查看它,@NathanP。
猜你喜欢
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多