javascript循环中断
我知道我应该知道如何做到这一点,但有些事情让我不知所措。一旦我有了匹配,我需要退出循环。为什么这不起作用javascript循环中断,javascript,Javascript,我知道我应该知道如何做到这一点,但有些事情让我不知所措。一旦我有了匹配,我需要退出循环。为什么这不起作用 ubot.registry.queue.each(function (dj, idx) { console.log(idx); var user = ubot.registry.users.get(dj.userid); console.log(user.name); console.log(rm_user) if(user.name == rm_us
ubot.registry.queue.each(function (dj, idx) {
console.log(idx);
var user = ubot.registry.users.get(dj.userid);
console.log(user.name);
console.log(rm_user)
if(user.name == rm_user) {
console.log(dj.userid);
return; // not exiting loop here
/*
if(!ubot.dj_timeout) {
ubot.remUserFromQueue(user);
return true;
} else {
console.log(ubot.dj_timout);
}
*/
}
});
你不会说你在用什么框架,但我会做一个粗略的猜测,假设你在用。如果是,可以使用以下语句退出循环:
throw $break;
这会引发一个自定义异常,每个方法都会将其理解为脱离“循环”的意思。这里有一个通用的解决方案,因为您尚未向我们提供有关正在运行的代码的详细信息 它不会打破循环。相反,一旦设置了标志,它会阻止函数内的代码运行
var flag = false;
ubot.registry.queue.each(function (dj, idx) {
if( !flag )
var user = ubot.registry.users.get(dj.userid);
if(user.name == rm_user) {
console.log(dj.userid);
flag = true;
// rest of the code
}
}
});
为什么这不起作用
ubot.registry.queue.each(function (dj, idx) {
console.log(idx);
var user = ubot.registry.users.get(dj.userid);
console.log(user.name);
console.log(rm_user)
if(user.name == rm_user) {
console.log(dj.userid);
return; // not exiting loop here
/*
if(!ubot.dj_timeout) {
ubot.remUserFromQueue(user);
return true;
} else {
console.log(ubot.dj_timout);
}
*/
}
});
返回的是未定义的,但函数总是返回未定义的,除非提供了特定的返回值。这样做,回报;您所做的与函数所做的没有任何不同。如果您可以访问每个函数,那么您可能可以访问一些或任何类似的函数,即每个函数的短路版本。每个函数是什么?它是如何定义的?有人会问为什么我们对你使用的代码一无所知,所以我们不知道是什么。你使用的每个方法,所以我们不知道API是否提供了一种打破循环的方法,所以我们不能直接回答这个问题。JavaScript没有本机的。each.you不打算回答@DanielA.White的问题吗?这解决了我的问题。。事实上,把回报放进去造成了更多的问题