首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用async.js的嵌套循环

使用async.js的嵌套循环
EN

Stack Overflow用户
提问于 2015-08-21 00:50:32
回答 2查看 743关注 0票数 0

我想做一个非常简单的代码,在javascript中有两个嵌套的循环,它们打印出它们当前正在使用的索引。(这是我想做的其他事情的基础)。内循环有一个计时器,所以它应该等待1秒才能打印每个数字。

我希望得到这样的结果:

代码语言:javascript
复制
outer count: 0
inner count: 0
inner count: 1
inner count: 2
inner count: 3
inner count: 4
in out 
outer count: 1
inner count: 0
inner count: 1
inner count: 2
inner count: 3
inner count: 4
in out

等等,但这不会发生的。我的代码有什么明显的错误吗?即使函数是嵌套的,异步也可以吗?请帮帮忙!

到目前为止,这是我的代码:

代码语言:javascript
复制
var count = 1;
        async.whilst(
        function() {return count < 5},
        function(callback){


            var icount = 0;

            console.log("outer count:" + count);

            async.whilst(
                function () { return icount < 5; },
                function (callback) {
                    console.log("inner count:" + icount);
                    icount++;
                    setTimeout(callback, 1000);
                },
                function (err) {
                    // 5 seconds have passed
                    console.log("in out");
                }
            );

            count++;

            callback();

        },
        function(err){
            console.log("out out");
        }
        );
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-21 01:02:17

代码语言:javascript
复制
var count = 1;
        async.whilst(
        function() {return count < 5},
        function(outer_callback){


            var icount = 0;

            console.log("outer count:" + count);

            async.whilst(
                function () { return icount < 5; },
                function (callback) {
                    console.log("inner count:" + icount);
                    icount++;
                    setTimeout(callback, 1000);
                },
                function (err) {
                    // 5 seconds have passed
                    console.log("in out");
                    outer_callback(); // <--- here
                }
            );

            count++;


        },
        function(err){
            console.log("out out");
        }
        );

async.whilst没有阻塞,这意味着所有的5个都计划同时运行。

我所做的更改是,现在在代码中,外部循环迭代只在内循环迭代完成时才完成。

票数 5
EN

Stack Overflow用户

发布于 2016-06-16 14:36:44

使用async.js嵌套循环:

代码语言:javascript
复制
    var i = 0;
    async.whilst
    (
        function() {return i < 3},

        function(next_i)
        {
            var j = 0;
            async.whilst
            (
                function () { return j < 3; },
                function (callback) 
                {
                    console.log( i +' / '+ j);
                    j++;
                    setTimeout(callback,0);
                },
                function () 
                {
                    i++;
                    next_i();
                }
            );
        }
    );

console.log

代码语言:javascript
复制
0 / 0
0 / 1
0 / 2
1 / 0
1 / 1
1 / 2
2 / 0
2 / 1
2 / 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32130714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档