从回调的 "super function" 中跳出
Break out from a "super function" from a callback
我想知道是否可以从回调函数中跳出 "super function"。我简化了代码以提高可读性
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return; //But I want to break out from isClicked()
});
}
我本能地写了这段代码,但我很快意识到我的推理是错误的,从回调的当前迭代中返回 broke。
基本上,我的问题是是否可以在回调中从 isClicked() 中跳出。
我的问题有一个简单的解决方法,但我想知道以上是否可行
所以你可以使用 jQuery's .eq() :
function isClicked() {
var userInputs = $("input");
for(var i=0; i<userInputs.length; i++) {
if (userInputs.eq(i).val() === "")
return; //But I want to break out from isClicked()
});
}
返回 false 会停止 .each() 继续迭代:
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //Returning false ends the .each() iterating
});
}
问题中提供的代码不需要,但我有时需要使用嵌套循环执行如下操作(在提供的情况下不需要):
function isClicked() {
for (i=0;i<variable.length;i++) {
var userInputs = $("input");
var done = false;
userInputs.each(function (index, element) {
if ($(element).val() === "") {
done = true;
return false; //Returning false ends the .each() iterating
}
});
if (done)
return true;
}
}
我不明白你为什么要从主函数中跳出,反正每个循环完成后执行就会停止。
尽管您可以更正代码,而不是从继续循环的每个循环中 return 什么都不做,如果您想中断循环,您可以 return false .
($(element).val() === "")
return false;
</p>
<pre><code>function isClicked() {
var userInputs = $("input");
var returnval = userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //But I want to break out from isClicked()
});
return "something"; //return something or nothing
}
我想知道是否可以从回调函数中跳出 "super function"。我简化了代码以提高可读性
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return; //But I want to break out from isClicked()
});
}
我本能地写了这段代码,但我很快意识到我的推理是错误的,从回调的当前迭代中返回 broke。
基本上,我的问题是是否可以在回调中从 isClicked() 中跳出。
我的问题有一个简单的解决方法,但我想知道以上是否可行
所以你可以使用 jQuery's .eq() :
function isClicked() {
var userInputs = $("input");
for(var i=0; i<userInputs.length; i++) {
if (userInputs.eq(i).val() === "")
return; //But I want to break out from isClicked()
});
}
返回 false 会停止 .each() 继续迭代:
function isClicked() {
var userInputs = $("input");
userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //Returning false ends the .each() iterating
});
}
问题中提供的代码不需要,但我有时需要使用嵌套循环执行如下操作(在提供的情况下不需要):
function isClicked() {
for (i=0;i<variable.length;i++) {
var userInputs = $("input");
var done = false;
userInputs.each(function (index, element) {
if ($(element).val() === "") {
done = true;
return false; //Returning false ends the .each() iterating
}
});
if (done)
return true;
}
}
我不明白你为什么要从主函数中跳出,反正每个循环完成后执行就会停止。
尽管您可以更正代码,而不是从继续循环的每个循环中 return 什么都不做,如果您想中断循环,您可以 return false .
($(element).val() === "") return false;
</p>
<pre><code>function isClicked() {
var userInputs = $("input");
var returnval = userInputs.each(function (index, element) {
if ($(element).val() === "")
return false; //But I want to break out from isClicked()
});
return "something"; //return something or nothing
}