从node.js中的函数返回值

时间:2016-08-06 07:11:51

标签: node.js

仍在学习节点。基于以下内容: https://github.com/request/request

var request = require('request');
request('http://www.google.com', function (error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body) // Show the HTML for the Google homepage.
  }
})

我希望将上面的内容创建为可重用的代码块,以为我将它包装在一个函数中,并将URL作为参数传递,如:

var request  = require('request');
var URL;

var request = require('request');
request('http://www.google.com', function (error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body) // Show the HTML for the Google homepage.
    }
})

function fetchURL (URL) {
    request(URL, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        return body;
      }
    });
};

var a = fetchURL('http://www.google.com');
console.log(a);

这有效但我不确定是否需要“返回体”,因为它也可以在没有这条线的情况下工作。很高兴收到关于我的编码风格的评论,因为这对我来说都是新的。

1 个答案:

答案 0 :(得分:0)

Node中的模式是提供回调作为异步函数的参数。按照惯例,此回调函数将error作为其第一个参数。例如:

function fetchURL(url, callback) {
    request(url, function(error, response, body) {
      if (!error && response.statusCode == 200) {
        callback(null, body);
      } else {
        callback(error);
      }
    });
};

fetchURL('http://www.google.com', function(err, body) {
    console.log(body);
});

请注意,在您的代码段中,return body;是从传递到fetchURL()的匿名回调函数返回的。 fetchURL()本身不返回任何内容。