Function JS函数的事件侦听器
我们可以知道JS函数何时完成运行。示例:我有一个进程较长的函数,我希望监视该进程,或者至少知道它何时完成。有几种方法可以知道函数何时完成运行 同步函数 如果所讨论的函数完全同步运行,那么调用该函数的代码将等待它完成后再执行。例如:Function JS函数的事件侦听器,function,monitoring,Function,Monitoring,我们可以知道JS函数何时完成运行。示例:我有一个进程较长的函数,我希望监视该进程,或者至少知道它何时完成。有几种方法可以知道函数何时完成运行 同步函数 如果所讨论的函数完全同步运行,那么调用该函数的代码将等待它完成后再执行。例如: function a() { // do something } function b() { a(); console.log("a is done"); // will only run once a is finished } fun
function a() {
// do something
}
function b() {
a();
console.log("a is done"); // will only run once a is finished
}
function a() {
// do something
console.log("did something");
// do something else
console.log("done");
}
异步函数
在JavaScript中,这是完成此任务的另一种方法,即使您有异步调用,它们也可以工作—例如,对服务器的请求等。要开始,请让第一个函数返回一个承诺:
function a() {
return new Promise((resolve, reject)=>{
// do something
resolve(); // once we're done, resolve the promise
});
}
promise的构造函数采用一个函数,该函数采用两个参数,resolve
和reject
,这两个参数由JavaScript提供给它。处理完成后,可以调用resolve()
函数,如果遇到表示无法解决的错误,可以调用reject()
函数
要使用此功能,您可以执行以下操作:
function b() {
a().then(()=>{
console.log("a is done"); // will only run once a is finished
});
}
运行承诺的好处在于,所有其他代码都可以继续运行——除了传递到then
方法中的匿名函数之外,承诺后面没有任何东西被阻止对于类似的事情,我肯定会采用这种方法。
监测进展/记录
至于监控功能的进度,这实际上取决于功能的工作方式。最好的办法可能是在长函数到达某些部分时调用某种日志函数。例如:
function a() {
// do something
}
function b() {
a();
console.log("a is done"); // will only run once a is finished
}
function a() {
// do something
console.log("did something");
// do something else
console.log("done");
}
如果出于任何原因无法更改函数a()
,那么就没有好的方法可以做到这一点(我知道),除非您知道它会更改一些全局变量,并且您可以检查它是否有更改,但是像这样的方法是非常危险的,肯定不是一种好的方法
结论
在不知道您想要监控哪种功能/流程的情况下,我真的不能说太多了——例如,我没有在这里介绍过检查文件上传进度
同样,如果该过程发生在不同的服务器或设备上,那么这些方法根本不起作用-您可能需要签出或(更可能)获取这些任务的进度更新