我必须在表单提交上调用两个函数,但我想确保第二个函数仅在执行第一个函数后执行。 我无法控制第一个函数,所以我根本无法编辑它。
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.
答案 0 :(得分:1)
如果您无法访问a
,那么您无法在此处执行您想要执行的操作。没办法:JS在调用函数时创建一个调用对象,并在调用完成时自动生成GC。可悲的是,实际的内存管理是不受限制的,所以你无法检查。其他诡计涉及你干涉函数a
的代码,你说你无法得到......所以不,你不能这样做。
很抱歉,但正如常见问题解答所说:你可能并不总能得到你希望的答案,但这并不意味着你不喜欢的答案是不正确的...... :-P
但是,您有一点希望:如果函数a
和b
都是提交事件的回调或处理程序,那么可以查看排队这些电话的方式。给定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');
}
}