【问题标题】:API Request returns correctly, but is null in the callback functionAPI Request 正确返回,但在回调函数中为 null
【发布时间】:2017-07-23 17:15:10
【问题描述】:

我正在使用 npm Express 和 Request 模块通过 API 获取电影信息:

var express = require("express");
var app = express();
var request = require("request");

app.get("/results", function(req, res){
    console.log(getBody("http://www.omdbapi.com/?s=The+Shining&page=1&apikey=myKey"));
});

function getBody(requestString){
    request(requestString, function(error, response, body){
        return body;
    };
}

为了便于阅读,我在此处删除了对请求的错误检查。

在请求中,记录“正文”表明请求确实返回了正确的 JSON。但是,当我返回 app.get 时,日志记录的值是未定义的。

难道不能把这个值返回给app.get的回调函数吗?

【问题讨论】:

    标签: javascript node.js express callback request


    【解决方案1】:

    request 是一个异步函数,因此您需要使用多种技术之一(回调、承诺等)才能成功返回数据。

    这是一个带有回调的示例:

    app.get("/results", function(req, res) {
      getBody(endpoint, function (data) {
        console.log(data);
      });
    });
    
    function getBody(endpoint, callback) {
      request(endpoint, function(error, response, body) {
        callback(body);
      });
    }
    

    还有一个使用承诺的例子:

    app.get("/results", function(req, res) {
      getBody(endpoint).then(function (data) {
        console.log(data);
      });
    });
    
    function getBody(endpoint, callback) {
      return new Promise(function (resolve, reject) {
        request(endpoint, function(error, response, body) {
          if (error) reject('Request failed');
          resolve(body);
        });  
      });
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 2022-01-27
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多