Javascript 优雅地经过一个;单击事件";通过多次回调
当一个未登录的用户点击一个给定的按钮时,我想停止事件,收集他的oauth,如果我没有,收集他的电子邮件,然后执行事件 我想用javascript做所有的事情,因为这样会使事情变得简单得多 这就是我执行它的方式,我有两个问题:Javascript 优雅地经过一个;单击事件";通过多次回调,javascript,asynchronous,callback,Javascript,Asynchronous,Callback,当一个未登录的用户点击一个给定的按钮时,我想停止事件,收集他的oauth,如果我没有,收集他的电子邮件,然后执行事件 我想用javascript做所有的事情,因为这样会使事情变得简单得多 这就是我执行它的方式,我有两个问题: 有没有一种更优雅的方法来执行多级回调 我在最后触发事件的方式似乎有些不妥。有什么更好的方法 考虑将单击事件回调存储在变量中。当用户单击按钮时,JS首先检查它是否经过身份验证。如果是,则执行回调。如果不是,则将回调作为参数传递给身份验证例程。当身份验证例程成功时,它可以执行回
考虑将单击事件回调存储在变量中。当用户单击按钮时,JS首先检查它是否经过身份验证。如果是,则执行回调。如果不是,则将回调作为参数传递给身份验证例程。当身份验证例程成功时,它可以执行回调。这是怎么回事:
if (success = true) {
?
您知道是否将全局变量“success”设置为true,对吗?如果要检测变量“success”是否等于true,请使用以下命令:
if (success === true) {
注意3个相等的标记
通过对代码进行严格翻译,我得到了以下结果:
//After everything is done, you want to execute this
function afterEmail(event) {
$(event.currentTarget).trigger(event.type);
}
//2nd level function
function collectEmail(event) {
console.log("Collecting email");
if (success === true){
afterEmail(event);
} else {
failFn();
}
}
//1st level function
function authentication(event) {
if (success === true) {
collectEmail(event);
} else {
failFn();
}
}
jQuery("a.callbacktesting").click(function (event) {
if (success === false) {
event.preventDefault();
event.stopImmediatePropagation();
authentication(event);
}
});
如果您试图触发DOM事件,则需要使用jQuery.trigger或类似工具。我需要有关您的程序的更多信息以提供更多帮助。Hmmm,这就是我所做的-endevent:event,我将事件直接作为参数放置。问题是如何将click事件存储为变量并执行它。我找不到执行它的命令(event.XXX)
//After everything is done, you want to execute this
function afterEmail(event) {
$(event.currentTarget).trigger(event.type);
}
//2nd level function
function collectEmail(event) {
console.log("Collecting email");
if (success === true){
afterEmail(event);
} else {
failFn();
}
}
//1st level function
function authentication(event) {
if (success === true) {
collectEmail(event);
} else {
failFn();
}
}
jQuery("a.callbacktesting").click(function (event) {
if (success === false) {
event.preventDefault();
event.stopImmediatePropagation();
authentication(event);
}
});