我正在访问在另一个js文件中编写的几个方法。所以我这样访问它们:
文件1:
function minit() {
this.addval = function(val1, val2) {
return val1 + val2;
}
function autoexecute(d) {
//do something here//
//raise event//
}
};
file2的:
var con = new minit();
var result = con.addval(2, 3);
/*
con.autoexecute(function(d) { //Wanna do something like this
alert(d);
});
*/
以上事情按预期工作,得到结果..
现在,假设autoexecute(d)
方法在一段时间后自动调用。我如何知道该方法是否已执行?
这样,我想在autoexecute(d)
(在file1中)创建一个事件(在file2中)。
更新 我希望这个例子能帮助你理解这个问题。
company.js //这是主要文件,将在 ui.html中用作参考
function hello(personname) { //this method will invoke automatically after 1 minute..
}
ui.html
<script src="company.js"></script>
<script>
$(document).ready(function() {
function bye(personame) { //this method will be called automatically if hello method invoked.... personame is the argument passed from hello method//
alert("comany.js -> hello function is executed");
}
});
</script>
答案 0 :(得分:1)
如果函数具有相同的范围,则只能执行此操作(全局范围是最佳情况)。如果自动执行功能具有本地范围,则您无法执行此操作。
实质上,像这样覆盖原始函数......
// keep a reference to the original function
var _autoexecute = autoexecute;
// override the original function with your new one
function autoexecute(d) {
alert("before autoexecute"); // fired before the original autoexecute
_autoexecute(d); // call the original autoexecute function
alert("after autoexecute"); // fired after the original autoexecute
}
现在,每当调用autotexecute
时,它将调用您的新函数,它可以处理事件之前和之后,以及调用原始函数。只需删除(可怕的)警报,并根据需要替换事件处理程序。
答案 1 :(得分:0)
据我所知,有人应该纠正我,如果我错了,没有办法(至少没有一些库)来检测在javascript中被触发的函数。函数执行不会触发其他函数可以“处理”的事件。
在你的例子中,你想要一个函数在另一个函数被触发后自动触发,你需要做的就是在第一个被“触发”的函数结束时调用你要触发的函数。令人困惑,但希望这会有所帮助。
function handler(){
alert("main function was fired!");
}
function main(){
//Code of main goes here and then at the end just add:
handler();
}
现在当你的“主”完成它的工作时,它将调用handler
函数。
无论您在何处定义处理程序函数(可以是不同的文件或同一文件),只要它可以在main
的范围内访问,它就会在它结束时触发。它甚至可以在声明main之后声明,只要在main被触发之前声明它。