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

时间:2017-10-16 19:56:38

标签: javascript

我正在尝试为函数设置一个全局变量,以便在范围内的所有函数中使用它。使用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

在这种情况下,我如何获得财产?谢谢。

1 个答案:

答案 0 :(得分:-1)

旧答案

#include <algorithm> #include <iostream> #include <vector> using namespace std; struct greater_than { int k; greater_than(int k) : k(k) {} bool operator () (int val) const { return val > k; } }; int main() { int ar[4] = { 10,44,36,14 }; vector<int> shiva(ar, ar + 4); int k; cin >> k; cout << count_if(shiva.begin(), shiva.end(), greater_than(k)) << endl; } 之外声明result。必须在这种情况下工作。

编辑:如果那是你想要的,那么可能使exports.update等于里面的空对象

截至12月17日的新答案

@ASem:如果您还在努力,可以在result下定义result.docs = {}; 吗?