nodejs能否返回request模块数据,作为全局变量

nodejs能否返回request模块数据,作为全局变

相关代码

var request = require('request');
var URL = require('url');
var iconv = require('iconv-lite');

var url = 'https://segmentfault.com/q/1010000010487842/';

request({
    encoding: null,
    url: url
}, function (error, response, body) {

    
    var array1 = /<title>(.*)<\/title>/gi.exec(body);
    if (array1 != null) {
          var title = array1[1];
        //console.log(title);
    }
  
    console.log(title);
    return title;//能否返回
    
});
//console.log(title);//title未定义,报错title is not defined

//需要外部调用

能否把title返回,作为全局变量使用。

阅读 4.4k
1 个回答

看来你对什么是异步还不是很了解,建议先找异步的基础文章看看。
你这个例子中,可用promise包裹一下,然后对外返回一个promise。 也可采用回调函数方式对外提供获取title。
不清楚你对promise是否理解,所以暂时用简单的回调函数实现。

var title;
module.exports.getTitle = function(callback) { 
  if(title) {
    return callback(null, title);
  }

  request({
    encoding: null,
    url: url
  }, function (error, response, body) {
    if(error) {
      return callback(error);
    }
    var array1 = /<title>(.*)<\/title>/gi.exec(body);
    if (array1 != null) {
      title = array1[1];
    }
    return callback(null, title);
  });
}

外部调用时,这样使用,假设上面的包名为 titleModule

var titleModule = require('./titleModule');

titleModule.getTitle(function(err, title) {
    console.log(title); //这里就是你要的title
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题