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

发布于 2022-09-07 20:02:44 字数 634 浏览 9 评论 0

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返回,作为全局变量使用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁许谁一生繁华 2022-09-14 20:02:44

看来你对什么是异步还不是很了解,建议先找异步的基础文章看看。
你这个例子中,可用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
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文