繁体   English   中英

如何在函数内部跳出 for 循环? (节点.js)

[英]How to break out of a for loop while inside of a function? (node.js)

我正在使用这个库: https : //github.com/NodeRedis/node_redis

这是我的代码示例:

var redis = require('redis');
var redisdb = redis.createClient(); //creates a new client
var multi = redisdb.multi();

redisdb.on('connect', function() {
    console.log('connected to redis');
});

redisdb.flushdb(function(err, success) {
    if (success) {
        console.log('cleared redis DB');
    }
});

redisdb.sadd("list", "list:1");
redisdb.sadd("list:1", "list:1:stuff:abc");
redisdb.sadd("list", "list:2");
redisdb.sadd("list", "list:3");
redisdb.sadd("list:3", "list:3:stuff:def");
redisdb.sadd("list", "list:4");
redisdb.sadd("list", "list:5");
redisdb.sadd("list", "list:6");
redisdb.sadd("list", "list:7");
redisdb.sadd("list", "list:8");
redisdb.sadd("list", "list:9");
redisdb.sadd("list", "list:10");
redisdb.sadd("list", "list:11");
redisdb.sadd("list", "list:12");
redisdb.sadd("list", "list:13");
redisdb.sadd("list", "list:14");
redisdb.sadd("list", "list:15");

var abc = function(value) {
    console.log(value);
    /*
    returns:
    [ 'list:3' ]
    [ 'list:1' ]
*/
}

redisdb.smembers('list', function(err, mems) {
            if (mems && mems.length > 0) {
                for (var i = 0; i < mems.length; i++) {
                    redisdb.scard(mems[i], function(err, data) {
                        if (data > 0) {
                        abc(this.args); //would like it if the loop stopped here
                    }
                    });
                }
            }
            });

我希望循环从我调用函数abc的那一刻起停止。 因此,在这种情况下,它只会返回[ 'list:3' ]

我怎么能做到这一点?

谢谢

只需在您的 abc 通话后添加一个中断:

if (data > 0) {
  abc(this.args)
  break
}

break将退出循环。

if (data > 0) {
                    abc(this.args); //would like it if the loop stopped here
                    return;  
                }

or 

 if (data > 0) {
                    abc(this.args); //would like it if the loop stopped here
                    i= mems.length; //Not a best practice 
                }
for(var i = 0, var found = false; i < Mena.index &&  found   == false; i ++) 
{
   //your stuff...
   if(data>0) 
   {
      //your stuff...
      found = true; //break
   }
 }

这是非常基本的算法内容,对于所有 c 语法编程语言都是类似的。 http://www.w3schools.com/js/js_loop_for.asp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM