鍍金池/ 問答/Java  HTML/ nodejs能否返回request模塊數(shù)據(jù),作為全局變量

nodejs能否返回request模塊數(shù)據(jù),作為全局變量

nodejs能否返回request模塊數(shù)據(jù),作為全局變

相關代碼

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

//需要外部調(diào)用

能否把title返回,作為全局變量使用。

回答
編輯回答
大濕胸

看來你對什么是異步還不是很了解,建議先找異步的基礎文章看看。
你這個例子中,可用promise包裹一下,然后對外返回一個promise。 也可采用回調(diào)函數(shù)方式對外提供獲取title。
不清楚你對promise是否理解,所以暫時用簡單的回調(diào)函數(shù)實現(xiàn)。

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

外部調(diào)用時,這樣使用,假設上面的包名為 titleModule

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

titleModule.getTitle(function(err, title) {
    console.log(title); //這里就是你要的title
});
2018年2月11日 09:03