灵活的流量控制工具中的回调和下划线

时间:2014-04-20 10:44:40

标签: javascript node.js callback underscore.js nimble

我很难理解敏捷,这里有两个问题:

1 - 我在下面有一个很小的测试代码,几乎直接从nimble的在线教程中复制。我没有在那里使用任何复杂的asyn函数,但出于简单原因只使用console.log。

var nimble = require('nimble');
nimble.series([
    function(cb) {
        console.log("first");
        cb();
    },
    function(cb) {
        console.log("second");
        cb();
    }
]);

它按照承诺的方式工作,但回调的重点是什么(cb)?从代码中我似乎永远不会将任何东西作为cb传递给系列中的任何一个函数。

然后我尝试了修改后的代码版本。基本上,它会删除所有回调。

var nimble = require('nimble');
nimble.series([
    function() {
        console.log("first");
    },
    function() {
        console.log("second");
    }
]);

遗憾的是,只输出“第一”而不是“第二”,所以在某处出错,不知道为什么。现在我很困惑那回调究竟是什么以及为什么我们必须拥有它。

2 - 从nimble的教程中,似乎可以方便地使用下划线(_)。我尝试了以下代码,这是直接在线复制的,但我刚刚被告知_没有定义..

var nimble = require('nimble');
_.series([
    function (callback) {
        setTimeout(function () {
            console.log('one');
            callback();
        }, 25);
    },
    function (callback) {
        setTimeout(function () {
            console.log('two');
            callback();
        }, 0);
    }
]);

可能我错了。我应该导入underscore.js才能在敏捷中使用_吗?但敏捷表示,它的一个卖点是它很小,不需要导入异步和下划线。然后我在这里再次感到困惑..

1 个答案:

答案 0 :(得分:0)

问题1:

nimble.series()需要在每个函数中调用cb()来告诉它继续下一个函数。这就是为什么你的第二个功能在第一个功能的cb()输出后没有被执行的原因

问题2:

是的,在使用它之前需要导入下划线,就像使用灵活的

一样

var _ = require('下划线');