我必须在表单提交上调用两个函数,但我想确保第二个函数仅在第一个函数执行后才执行。我无法控制第一个功能,所以我根本无法编辑它。
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 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.
如果您根本无法访问,a
那么您将无法在这里做您想做的事情。没办法:JS在调用函数时创建一个调用对象,并在调用完成时自动GC。可悲的是,实际的内存管理是不受限制的,所以你无法检查。其他诡计涉及您对功能代码的干预a
,您说您无法获得...所以不,您不能这样做。
对此很抱歉,但正如常见问题解答所说:您可能并不总是得到您希望的答案,但这并不意味着您不喜欢的答案不是真的...... :-P
但是,您有一点希望:如果函数a
和b
都是提交事件的回调或处理程序,您可以研究对这些调用进行排队的方法。鉴于 jQuery 标签.queue()
本身
Yes, you can, there is a lot of ways to do that, but here is a simple way to make it.
You can use persistent object localStorage.
You can use session object 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');
}
}
根据Eli Gray的说法,您可以像这样进行测试:
function foo() {
foo.complete = false;
// your code here
foo.complete = true;
}
foo.complete = false;
if (foo.complete) { // foo execution complete
// your code here
}