次の例では、関数「fetcher」、「parser」、および「saveToDb」内の変数「locals」にアクセスできません。
var parser = require('parser.js');
var fetcher = require('fetcher.js');
var saveToDb = require('models/model.js');
var async = require('async');
function task() {
var locals = [] //<-- declared here
async.series([
fetcher, //<-- can not access "locals"
parser, //<-- can not access "locals"
saveToDb //<-- can not access "locals"
],
function (err) {
if (err) return callback(err);
callback(null);
});
}
次の例では、「ローカル」にアクセス可能です。要求されたモジュールから関数宣言をコピーし、「async.series」内に直接貼り付けました。
var async = require('async');
function task() {
var locals = [] //<-- declared here
async.series([
function(callback) {// <-- can access "locals"},
function(callback) {// <-- can access "locals"},
function(callback) {// <-- can access "locals"}
],
function (err) {
if (err) return callback(err);
callback(null);
});
}
これは機能しますが、コードをモジュール化しておきたいと思います。どうすれば修正できますか?または、JavaScript の基礎についてここで忘れていたことはありますか?
ありがとう。