Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 下划线js时代系列_Javascript_Node.js_Asynchronous_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 下划线js时代系列

Javascript 下划线js时代系列,javascript,node.js,asynchronous,backbone.js,underscore.js,Javascript,Node.js,Asynchronous,Backbone.js,Underscore.js,我在nodejs中使用下划线js,并且需要该方法。times()将调用函数X次 这就像预期的那样工作,但是我需要在一个系列中迭代,而不是在并行中迭代,这看起来是这样的 知道有没有一种方法可以在带有回调方法的系列中使用它吗?这个异步库可能会让您开始使用它 或者,如果您想自己做,可以在调用每个函数回调后进行递归调用,下面是源代码,如下所示: function f() { some_async_call({ callback: function(err, results) {...}) }

我在nodejs中使用下划线js,并且需要该方法。times()将调用函数X次

这就像预期的那样工作,但是我需要在一个系列中迭代,而不是在并行中迭代,这看起来是这样的


知道有没有一种方法可以在带有回调方法的系列中使用它吗?

这个异步库可能会让您开始使用它


或者,如果您想自己做,可以在调用每个函数回调后进行递归调用,下面是源代码,如下所示:

function f() {
    some_async_call({ callback: function(err, results) {...})
}
_(3).times(f);
然后三个
f
调用将串联发生,但是
一些异步调用不一定串联发生,因为它们是异步的

如果要强制调用以串联方式运行,则需要使用异步调用上的回调来启动串联中的下一个调用:

function f(times, step) {
    step = step || 0;
    some_async_call({
        callback: function(err, results) {
            // Do something with `err` and `results`...
            if(step < times)
                f(times, step + 1);
        }
    });
}
f(3);
《泰晤士报》对这一切有何影响?不,真的

但是您仍然需要修改
f
以拥有回调函数,如果您总是调用
f
三次,那么:

async.series([f, f, f]);
可能比使用
.range
.map
动态构建阵列要好


这里真正的教训是,一旦您进入异步函数调用,您最终实现的所有逻辑都是回调调用回调,一路回调。

只是一个
for
循环,所以它确实是串联执行的。你的术语倒过来了吗?它不会等待前一个for循环完成执行,因此如果没有回调来调用下一个,那么需要一些时间的进程在下一次迭代之前不会总是完成的。那么你使用的是异步回调。看看,如果你不相信我,
.times
只是(var i=0;i。你必须把一些重要的事情排除在你的问题之外,比如你的回调在做什么。是的,但是node.js是异步的,所以即使我有一个for循环,for循环中的代码也不会“等待”直到上一次迭代完成。嗯,不,我想你是糊涂了。您正在交给
\uTimes
的函数正在调用异步函数,节点不会为
for
循环的每次迭代自动生成单独的线程。那么,你的回调函数做了什么是异步的,它支持什么类型的回调呢?我使用async,但是我应该如何定义它来执行x次?你可以做一些类似u.times(3,function(){functionary.push(theFunction);})的事情,将function()放入数组,然后异步.series(functionary)
_.times = function(n, iterator, context) {
  for (var i = 0; i < n; i++) iterator.call(context, i);
};
// Untested off the top of my head code...

function f(callback) {
    some_async_call({
        callback: function(err, results) {
            // Deal with `err` and `results`...
            callback();
        }
    });
}

var three_fs = _(3).range().map(function() { return f });
async.series(three_fs);
async.series([f, f, f]);