最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在不同的文件分配一个返回的结果为函数的变量

IT培训 admin 8浏览 0评论

在不同的文件分配一个返回的结果为函数的变量

我有,我想打电话和导出结果分配给一个变量utils的文件的功能。

目前,该变量定义然后我尝试分配返回结果,但我越来越不确定的结果,当我CONSOLE.LOG它。

这里是我的utils的/领事文件

var consul = require("consul")({host: config.consul.host'});
var consulBase = [];
var options;

module.exports = {
  consulQuery:  function(service){
      consul.catalog.service.nodes(service, function(err, results) {
          if(err) {console.log(err); throw err;}
           if(results.length <= 0) return {message: `Error could not find any service of ${service} registered with consul,`, errorCode: 500};
          if(results.length > 0) consulBase = [];
          results.forEach((result) => {
            consulBase.push(result.ServiceAddress+ ':' +result.ServicePort);
          });
          var serviceURL = 'http://' + consulBase[Math.floor(Math.random()*consulBase.length)];
          return options = {
            baseUrl : serviceURL,
            form: {'':''},
            headers: {authorization: ''}
          };    
        });
    }

然后在另一个文件中,我打电话这样的,然后试图将值赋给“选项”,但我越来越不确定。

var consulQuery = require("../utils/consul").consulQuery;

// Get options array right away
var options = consulQuery('auth');

// Get options array every 5 seconds
setInterval(() => {
  options = consulQuery('auth');
  console.log(options);
}, 5 * 1000);
回答如下:

OK,你有一对夫妇的问题。

首先,是概念上的什么你正在尝试做的。二是你有什么实际需要在你的代码修改,使其工作。

我不会谈论的第一部分,因为,有很多很好的资源,了解与实例更好的话,我可以在这里做异步。

对于你的代码中的实际问题:

  1. 你缺少的consulQuery回调()

它应该是这样的(请注意,我加入CB):

module.exports = {
    consulQuery: function (service, cb) {
        consul.catalog.service.nodes(service, function (err, results) {
            if (err) {
                console.log(err);
                cb(err, null)
                throw err;
            }
            if (results.length <= 0) return {
                message: `Error could not find any service of ${service} registered with consul,`,
                errorCode: 500
            };
            if (results.length > 0) consulBase = [];
            results.forEach((result) => {
                consulBase.push(result.ServiceAddress + ':' + result.ServicePort);
            });
            var serviceURL = 'http://' + consulBase[Math.floor(Math.random() * consulBase.length)];
            cb(null, {
                baseUrl: serviceURL,
                form: {'': ''},
                headers: {authorization: ''}
            });
        });
    }
}

其次,在调用该函数的其他文件,你必须现在都通过了一个回调函数。

options = consulQuery('auth', (err, response) => {
if(err){
console.log(err)
}
console.log(response)

});

在不同的文件分配一个返回的结果为函数的变量

我有,我想打电话和导出结果分配给一个变量utils的文件的功能。

目前,该变量定义然后我尝试分配返回结果,但我越来越不确定的结果,当我CONSOLE.LOG它。

这里是我的utils的/领事文件

var consul = require("consul")({host: config.consul.host'});
var consulBase = [];
var options;

module.exports = {
  consulQuery:  function(service){
      consul.catalog.service.nodes(service, function(err, results) {
          if(err) {console.log(err); throw err;}
           if(results.length <= 0) return {message: `Error could not find any service of ${service} registered with consul,`, errorCode: 500};
          if(results.length > 0) consulBase = [];
          results.forEach((result) => {
            consulBase.push(result.ServiceAddress+ ':' +result.ServicePort);
          });
          var serviceURL = 'http://' + consulBase[Math.floor(Math.random()*consulBase.length)];
          return options = {
            baseUrl : serviceURL,
            form: {'':''},
            headers: {authorization: ''}
          };    
        });
    }

然后在另一个文件中,我打电话这样的,然后试图将值赋给“选项”,但我越来越不确定。

var consulQuery = require("../utils/consul").consulQuery;

// Get options array right away
var options = consulQuery('auth');

// Get options array every 5 seconds
setInterval(() => {
  options = consulQuery('auth');
  console.log(options);
}, 5 * 1000);
回答如下:

OK,你有一对夫妇的问题。

首先,是概念上的什么你正在尝试做的。二是你有什么实际需要在你的代码修改,使其工作。

我不会谈论的第一部分,因为,有很多很好的资源,了解与实例更好的话,我可以在这里做异步。

对于你的代码中的实际问题:

  1. 你缺少的consulQuery回调()

它应该是这样的(请注意,我加入CB):

module.exports = {
    consulQuery: function (service, cb) {
        consul.catalog.service.nodes(service, function (err, results) {
            if (err) {
                console.log(err);
                cb(err, null)
                throw err;
            }
            if (results.length <= 0) return {
                message: `Error could not find any service of ${service} registered with consul,`,
                errorCode: 500
            };
            if (results.length > 0) consulBase = [];
            results.forEach((result) => {
                consulBase.push(result.ServiceAddress + ':' + result.ServicePort);
            });
            var serviceURL = 'http://' + consulBase[Math.floor(Math.random() * consulBase.length)];
            cb(null, {
                baseUrl: serviceURL,
                form: {'': ''},
                headers: {authorization: ''}
            });
        });
    }
}

其次,在调用该函数的其他文件,你必须现在都通过了一个回调函数。

options = consulQuery('auth', (err, response) => {
if(err){
console.log(err)
}
console.log(response)

});
发布评论

评论列表 (0)

  1. 暂无评论