Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数范围内的全局变量不工作-async.series_Javascript - Fatal编程技术网

Javascript 函数范围内的全局变量不工作-async.series

Javascript 函数范围内的全局变量不工作-async.series,javascript,Javascript,我试图为函数设置一个全局变量,以便在作用域内的所有函数中使用它。使用async.series一个接一个地调用函数: exports.update = function(req, res, next){ var result = {}; // setting global var for the scope var function1 = function(callback) { MyModel.findOne(conditions)

我试图为函数设置一个全局变量,以便在作用域内的所有函数中使用它。使用
async.series
一个接一个地调用函数:

  exports.update = function(req, res, next){

    var result = {};      // setting global var for the scope

    var function1 = function(callback) {
      MyModel.findOne(conditions)
        .lean()
        .exec(function(err, docs) {
          if (err) {
            return callback(err, null);
          }

          result.docs = docs; // assigning function result to global var

          return callback(null, 'done');
        });
    };

    var function2 = function(callback) {
      var fieldsToSet = {
        // ...
        somefield: result.docs.someproperty // error here result.docs = null
      };

        Mymodel.create(fieldsToSet, function(err, record) {
          // ...
        });
    };
    };

    require('async').series([function1, function2]);
  };
返回错误:

TypeError: Cannot read property 'someproperty' of null
在这种情况下,我如何获得财产?谢谢。

旧答案

在导出之外声明
结果
。更新。在这种情况下必须工作

编辑:如果您想要的话,也可以将
result
设置为函数中的空对象


12月17日的新答案


@亚欧会议:如果你还在准备,也许可以定义
result.docs={}
就在
result
下面?

你的result.docs里面有什么东西吗?听起来像是
docs
你在返回的第一个函数是
null
。否则,您可能会收到一个错误,说您正在尝试读取
未定义的
上的属性。奇怪的是,主函数实际上完成了它的工作,但却出错了。重新启动服务器后,我得到了所需的信息。@Mike C如果我要从
function1
中删除记录,在作用域中的下一个函数中,它能变成
null
?这可能是原因吗?@ASem如果将其设置为
null
,则只能将其设置为
null
。如果您仅使用
result.docs=docs
分配它,则这意味着
docs
必须为
null
。如果不在那里,则在其他地方将
null
分配给
result。这两个函数都可以使用docs
result
。否则,他们将在尝试访问
结果时出错,而不是
someproperty
。编辑:但是,
result
在其他函数中不可用,不能用于从多个函数收集数据。