Javascript 表单提交jQuery上的多个函数

Javascript 表单提交jQuery上的多个函数,javascript,jquery,analytics,Javascript,Jquery,Analytics,我必须在表单submit上调用两个函数,但我希望确保第二个函数仅在第一个函数执行后执行。 我无法控制第一个函数,因此根本无法编辑它 function a(et){ //function a script } function b(evt){ //function b script } from function b is there a way that i can check if function a was completed or executed fully. 根据

我必须在表单submit上调用两个函数,但我希望确保第二个函数仅在第一个函数执行后执行。 我无法控制第一个函数,因此根本无法编辑它

function a(et){
   //function a script
}

 function b(evt){

 //function b script
}

from function b is there a way that i can check if function a was completed or executed fully. 
根据测试结果,您可以这样测试:

function foo() {
  foo.complete = false;
  // your code here
  foo.complete = true;
}
foo.complete = false;

if (foo.complete) { // foo execution complete
  // your code here
}
如果您根本无法访问
a
,则无法在此处执行您想要执行的操作。不行:JS在调用函数时创建一个调用对象,在调用完成时自动GC调用它。不幸的是,实际的mem管理是禁止的,所以你不能检查。其他的诡计包括你对函数
a
的代码的干预,你说你不能得到它。。。所以不,你不能这么做

对此很抱歉,但正如常见问题解答所说:你可能并不总能得到你所希望的答案,但这并不意味着你不喜欢的答案不是真的……:-P



不过,您还有一点希望:如果函数
a
b
都是提交事件的回调或处理程序,那么您可以研究将这些调用排队的方法。考虑到jQuery标记

是的,您可以,有很多方法可以做到这一点,但这里有一个简单的方法 您可以使用持久对象。
您可以使用会话对象


那么函数a是异步的?您可以在函数a中设置一个全局变量并将其值设置为某个常量值。然后在调用函数blook之前检查该值,这可能会对您有所帮助。是函数a是异步的,请检查存储区的数量是否可见…问题是我无法更新函数foo(),那么如何添加foo.complete=?函数foo()的内部:(JavaScript有一个单一的执行流,所以当调用一个函数时,它将执行,所以你可以做的只是调用一些事件,比如setInterval,如果这个bool变为true,那么它执行的第一个函数将是执行下一个函数的绿线op不能这样做:他没有访问函数
a
。另外,
localStorage
对X浏览器不是很友好(较旧的浏览器不支持),您可以使用该功能向dom对象添加自定义数据。实现与上面的示例类似,您可以向dom对象添加数据,如下所示:
$(“#div response”).data(“myObject”,“done”)
要删除数据,您可以这样使用:
$(“#div response”).removeData(“myObject”);
为什么要使用jQuery,为什么不简单地使用
document.getElementById('div-response').setAttribute('data-myObject','done');
?老实说,感谢您的赞赏@eliavanotegem。我提出jQuery是因为这个问题的标签是jQuery。:)
function a(evt){
   // Asynchronous function
   // ... your code here
   // before finish function create the persistent object
   localStorage.setItem('myObject', 'done');
   return;
}

function b(evt){
   // Checks if a() function was completed
   var _done = localStorage.getItem('myObject');
   if(_done && _done == 'done') {
     // your code here: the a() function was completed
     localStorage.removeItem('myObject');
   }
}