我使用的是jQuery 1.9.1。
假设我有一个id="clickMe"的按钮我的jQuery代码是:
$('#clickMe').click(function(event)
{
eventHandler1();//do something
eventHandler2();//use output from eventHandler1() and do something
}
现在,我希望最后执行"eventHandler2",以便我可以使用"eventHandler1"的输出。是否有任何方法可以手动做到这一点,而不仅仅是我把处理程序在点击事件?还有一件事,"eventHandler1()"one_answers"eventHandler2()"出现在不同的.js文件中,因此需要
jQuery.when()
提供了一种基于一个或多个对象执行回调函数的方法,通常是表示异步事件的Deferred对象。
例如,当deferred是jQuery.ajax()
请求时,参数将是这些请求的jqXHR objects
,按照它们在参数列表中给出的顺序。
$.when(eventHandler1).then(eventHandler2).done(function(){
alert('done.');
});
所以甚至可以使用GLOBAL
变量来存储eventHandler1
的输出并访问eventHandler2
var someVar;
function eventHandler1()
{
// process
someVar = some value from process
return someVar;
}
function eventHandler2()
{
alert(someVar);
}
对OP评论的回应
当你在队列中询问执行处理程序时,你可以使用Jai
回答。
您可以使用.when
、.then
和.done
,如下所示。
$.when(eventHandler1).then(eventHandler2).done(function(){
//process code
});