是否可以让JS函数的返回取决于用户操作
Is it possible to have the return of a JS function depend on user action?
是否可以让JS函数的返回取决于用户操作?
假设我有函数 a 和函数 b。
函数 b 打开一个包含两个按钮的对话框,一个返回 true,另一个返回 false。我可以从 a 调用 b 并强制 a 等待 b 的返回,然后再继续其操作吗?
示例代码:
function a(){
if(b()){
do x
}else{
do y
}
}
function b(){
$("#anElement").dialog({
title: "This is a Dialog",
buttons:{
"Yes": function(){
//do some stuff
$(this).dialog("close");
return true;
},
Cancel: function(){
//do some stuff
$(this).dialog("close");
return false;
}
}
});
}
我想这很像确认,但我想在它之上构建的不仅仅是是/否。有什么建议吗?
不,你不能停止函数的执行(好吧,你可以使用带有中断条件的无限 while 循环,但这是糟糕的做法)。但是,您可以将 A 拆分为两个函数,并从函数 B 调用函数 A 的另一半。您甚至可以将返回函数传递给函数 B 并调用该函数,传入用户操作的值。
例:
function A() {
// do stuff
B(finishA);
}
function B(callback) {
if(someCondition) {
callback(true);
} else {
callback(false);
}
}
function finishA(userInput) {
if(userInput) {
// do something if the user clicked okay
} else {
// do something if the user clicked cancel
}
}
一种解决方案是...
function a () {
b( function () {
// do x
}, function () {
// do y
});
}
function b ( fn1, fn2 ) {
$( "#anElement" ).dialog({
title: "This is a Dialog",
buttons: {
"Yes": function () {
//do some stuff
$( this ).dialog( "close" );
fn1();
},
"Cancel": function () {
//do some stuff
$( this ).dialog( "close" );
fn2();
}
}
});
}
因此,您将两个函数传递给b
。如果激活了"是"按钮,则调用第一个函数,如果激活了"取消"按钮,则调用第二个函数。
此模式使您能够直接在 a
函数中定义行为,而不必将其追加到 b
函数。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 返回不一致结果的日期(取决于是否存在前导零)
- 是否可以让JS函数的返回取决于用户操作
- Jquery 返回元素的 .width() 取决于元素的找到方式
- 如何为窗体返回布尔值's”;onsubmit”;属性,这取决于ajax调用的成功与否
- 运行异步函数N次,其中N取决于调用返回的内容