表单上的多个函数提交jQuery

时间:2013-04-16 19:15:08

标签: javascript jquery analytics

我必须在表单提交上调用两个函数,但我想确保第二个函数仅在执行第一个函数后执行。  我无法控制第一个函数,所以我根本无法编辑它。

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. 

3 个答案:

答案 0 :(得分:1)

如果您无法访问a ,那么您无法在此处执行您想要执行的操作。没办法:JS在调用函数时创建一个调用对象,并在调用完成时自动生成GC。可悲的是,实际的内存管理是不受限制的,所以你无法检查。其他诡计涉及你干涉函数a的代码,你说你无法得到......所以不,你不能这样做。

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


但是,您有一点希望:如果函数ab都是提交事件的回调或处理程序,那么可以查看排队这些电话的方式。给定jQuery标记.queue() suggests itself

答案 1 :(得分:0)

根据Eli Grey,你可以这样测试:

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

if (foo.complete) { // foo execution complete
  // your code here
}

答案 2 :(得分:0)

是的,你可以,有很多方法可以做到这一点,但这是一个简单的方法来实现它 您可以使用持久对象localStorage 您可以使用会话对象sessionStorage

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');
   }
}