0

問題との5日間の戦い。3 つのファイルがあり、それらの間で 1 つの変数 kvmIndex を共有する必要があります

getKvmIndex.js

var kvmIndex=[],
exports.kvmIndex = kvmIndex;
exports.getSNMP = function (callback) {
   async.each(switchIps, function(switchIp, callback1) {
   goGo(switchIp, callback1);
   }, function(err) {
        callback();
    })
};

マッチ.js

var app1 = require("./app.js");
var kvmIndex;
exports.kvmIndex = kvmIndex;
...

exports.matchAll = function(callback) {
async.series([
    function(callback) {
        kvmIndex = app1.kvmIndex;
        decToHex(callback);
    },
    function(callback){
        matchSt('getPortToSt2', callback);
    },
    function(callback){
        console.log(kvmIndex);    //Here it defined! Works good.
        callback()
    }
])
callback();
}

app.js

var kvmSNMP = require('./getKvmIndex')
, match = require('./match')
, async = require('async')
, kvmIndex = [];
...
async.series([
function(callback) {
    kvmSNMP.getSNMP(callback);
},
function(callback) {
    exports.kvmIndex = kvmSNMP.kvmIndex;
    callback();
},
function(callback) {
    match.matchAll(callback);
},
function (callback) {
    kvmIndex = match.kvmIndex;
    callback();
},
function (callback) {
    console.log(match.kvmIndex); //Doesnt work(
    callback();
}
])

私がやっていること:

  • 空の変数を定義する
  • エクスポートする
  • それをグローバルに扱う
  • app.js でアクセスする

getKvmIndex.jsでは正常に動作しますが、match.jsでは動作しません。誰でも私を助けることができますか?

4

1 に答える 1

0

kvmIndex1 つのモジュール (ファイル) と 1 つのみで定義する必要があります。そのモジュールに、exportsあなたがするように追加してください。他のモジュール(ファイル)はrequire、モジュールを定義する必要がありkvmIndex、 にアクセスして使用しmyModule.kvmIndexます。

ノート:

1)変数から直接エクスポートするのではなく、getKvmIndex()からエクスポートする方が良いでしょう。getKvmIndex.jskvmIndex

2) バグがある可能性がありmatch.jsます -- コールバックがすぐに呼び出されます。callback2 番目の引数をに渡すつもりでしたasync.series()か?

于 2013-11-06T18:14:58.157 に答える