如何确定所有脚本何时完成运行

How to determine when all scripts finished running?

本文关键字:何时完 运行 脚本 何确定      更新时间:2023-09-26

我正在使用Javascript和jQuery来呈现页面。

页面必须很快加载。因此,我想先呈现一些基本信息,然后再发送另一个请求以获得一些额外信息。

我的问题是,我应该什么时候发出第二个请求?我如何知道基本信息何时完全完成渲染,并且没有脚本仍在运行?

使用AMD方法可能更好?除了requirejs,我还喜欢类似的lib。

这听起来像是yepnope 的工作

var asyncOperations = {
    counter: -1, // -1 because the value should not already met the ending condition at initialization
    finishedHandler: null;
    startOp: function() {
         if(counter == -1) counter = 0;
         counter++;
    },
    endOp: function() {
         counter++;
         if(counter == 0 && finishedHandler) {
             finishedHandler.inform();
    }
}
function handler(data) {
     doSomethingWithData();
     asyncOperations.endOp();
}
function allOperationsFinished() {
    alert("success");
}
function main() {
    asyncOperations.finishedHandler = allOperationsFinished;
    $.ajax(...whatever..., handler);
}

设置一个可以用计时器检查的信号量。假设您有5个脚本正在运行。设置全局变量finishedRunning=0;。在每个脚本中,在返回(即完成)之前执行finishedRunning+=1;。当finishedRunning达到5时,你就可以出发了。