【问题标题】:Dosynchronous Loop in node js节点js中的同步循环
【发布时间】:2018-05-01 13:55:17
【问题描述】:

我在 GitHub 上找到了以下代码以确保在调用第 n 个项目的处理器的回调之前不会处理第 n+1 个项目。

    /**
     * Process an array of data synchronously.
     *
     * @param data An array of data.
     * @param processData A function that processes an item of data.
     *                    Signature: function(item, i, callback), where {@code 
                                     item} is the i'th item,
     *                               {@code i} is the loop index value and 
                                     {@code calback} is the
     *                               parameterless function to call on 
                                     completion of processing an item.
     */
    function doSynchronousLoop(data, processData, done) {
    if (data.length > 0) {
        var loop = function(data, i, processData, done) {
            processData(data[i], i, function() {
                if (++i < data.length) {
                    loop(data, i, processData, done);
                } else {
                    done();
                }
            });
        };
        loop(data, 0, processData, done);
    } else {
        done();
    }
} 

我在调用 doSynchronousLoop() 方法和编写方法时遇到困难:processData() 和 done()。

请帮助我理解代码 sn-p,以及如何编写我想要迭代的代码?

【问题讨论】:

    标签: javascript node.js for-loop asynchronous


    【解决方案1】:

    好吧,你可以这样调用你的函数:

    let data = [1, 2, 3, 4];
    let doSomething = function(item, index, next) {
     // item = 1, 2, 3, 4
     // when finishing, call next to trigger next function run
     // item value will be 2
     next();
    }
    let onDone = function() {
     // when all of them are done
    }
    
    doSynchronousLoop(data, doSomething, doDone);
    

    【讨论】:

    • 谢谢,我应该在哪种方法下编写我想要迭代的代码?
    • doSomething 应该是它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多