更改node.js回调中的变量

时间:2014-05-27 19:47:13

标签: node.js asynchronous

我正在尝试更改回调函数中变量的值。

db.collection("some_collection").find().toArray(function(err, arrayResult){
  var myArrayResult = arrayResult;

  some_asynchronous_call(param1, param2, successCallback, failureCallback);

  function successCallback() {
     myArrayResult.reverse();
     processResults();
  }

  function failurCallback() {
     processResults();   
  }

  function processResults(){
     //Do some processing on myArrayResult array 
  }

}

所以基本上我需要访问successCallback和failureCallback函数中的变量myArrayResult。如果异步调用成功,那么我需要反转数组。但是在这两种情况下,processResults都需要在数组上运行。

1 个答案:

答案 0 :(得分:0)

由于successCallbackfailureCallbackprocessResults是clousre函数,因此数组myArrayResult应该在这些函数中可用。

你可以这样做,使数组myArrayResult可用于successCallback和failureCallback。

db.collection("some_collection").find().toArray(function(err, arrayResult){
  var myArrayResult = arrayResult;

  some_asynchronous_call(param1, param2, function(){successCallback(myArrayResult)}, function(){failureCallback(myArrayResult)});

  function successCallback(arraydata) {
     arraydata.reverse();
     processResults(arraydata);
  }

  function failurCallback(arraydata) {
     processResults(arraydata);   
  }

  processResults(arraydata){
     // do processing on arraydata
     res.end(JSON.stringify({data: arraydata}));
  }

}