Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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/node.js从模型中获取数据_Javascript_Node.js_Closures - Fatal编程技术网

JavaScript/node.js从模型中获取数据

JavaScript/node.js从模型中获取数据,javascript,node.js,closures,Javascript,Node.js,Closures,我百分之百肯定会有一些简单的答案,但今天我在谷歌搜索方面很差劲。守则内的问题 async.waterfall([ function(callback){ callback(null, 'some value..'); } ], function (err, result) { // how do I get result outside of this block? } ); 如果我在这个块之外设置了一个变量,并尝试将“result”赋值给它,那么由于Ja

我百分之百肯定会有一些简单的答案,但今天我在谷歌搜索方面很差劲。守则内的问题

async.waterfall([
  function(callback){
    callback(null, 'some value..');
  }
  ],
  function (err, result) {
    // how do I get result outside of this block?
   }
);
如果我在这个块之外设置了一个变量,并尝试将“result”赋值给它,那么由于JavaScript作用域的性质,它就不会从这个块中消失


谢谢

感谢大家的回答。我所做的-我已经切换到一个名为“步骤”的模块。它让我可以做到以下几点:

step = require('step');

var responseData = '{"a":1, "b":2}';

step(
  function someFunction1 () {
    // We do something here and return the result
    return '3';
  },
  function someFunction2 (err, result) {
    // We try to modify the variable that has been defined outside this block
    responseData.c = result;
  }
);

// responseData now returns {"a":1, "b":2, "c":3}

也许我也可以用async做类似的事情——我不知道。但是上面的工作方式正是我想要的。

谢谢大家的回答。我所做的-我已经切换到一个名为“步骤”的模块。它让我可以做到以下几点:

step = require('step');

var responseData = '{"a":1, "b":2}';

step(
  function someFunction1 () {
    // We do something here and return the result
    return '3';
  },
  function someFunction2 (err, result) {
    // We try to modify the variable that has been defined outside this block
    responseData.c = result;
  }
);

// responseData now returns {"a":1, "b":2, "c":3}

也许我也可以用async做类似的事情——我不知道。但是上面的工作方式正是我想要的。

你能澄清一下是什么在给
结果
赋值吗?我假设您指的是
async.falter
中的某个内容,是吗?我怀疑您试图在
falter
调用之后访问变量,这意味着问题恰恰在于异步概念。能否详细说明访问外部变量的位置?在本例中,result='some value..'。它通过回调进行分配。我想做的是:在async.瀑布之前设置一些数据,在瀑布内部执行一系列操作(所有外部变量都可以在内部访问),以某种方式进一步传递结果,但我不确定如何传递。理想情况下,我希望设置一个对象,在瀑布中使用该对象,同时不断更新其属性,并在我们离开瀑布时保留更改。解决方案已被接受…我认为我们需要更多的代码。。。您在这里使用的是特定的npm包吗?一旦您输入异步代码,您就必须留在那里——除了从瀑布的回调调用其他函数之外,没有“走出瀑布”的概念。但是,您可以在输入异步代码之前对创建的对象进行修改,但是您仍然必须确保在瀑布完成后通过使用代码或从回调中调用函数来访问它(除非正在修改的对象被视为全局对象)。您能澄清“赋值”是怎么做的吗要
结果
?我假设您指的是
async.falter
中的某个内容,是吗?我怀疑您试图在
falter
调用之后访问变量,这意味着问题恰恰在于异步概念。能否详细说明访问外部变量的位置?在本例中,result='some value..'。它通过回调进行分配。我想做的是:在async.瀑布之前设置一些数据,在瀑布内部执行一系列操作(所有外部变量都可以在内部访问),以某种方式进一步传递结果,但我不确定如何传递。理想情况下,我希望设置一个对象,在瀑布中使用该对象,同时不断更新其属性,并在我们离开瀑布时保留更改。解决方案已被接受…我认为我们需要更多的代码。。。您在这里使用的是特定的npm包吗?一旦您输入异步代码,您就必须留在那里——除了从瀑布的回调调用其他函数之外,没有“走出瀑布”的概念。但是,您可以在输入异步代码之前对创建的对象进行修改,但是您仍然必须确保在瀑布完成后通过使用代码或从回调中调用函数来访问它(除非正在修改的对象被视为全局对象)。