我指的是this。一切仍然不清楚。

  • 我有一个JS函数fillTree()来更新树,它具有复选框。
  • 我还有另一个函数checkSelectedBoxes(),它在window.onload上执行,用于检查选定的复选框。
  • 现在连接了许多其他功能。

  • 我的问题:
  • 如果我使用setTimeout(),其他脚本功能是否也会停止并等待功能完成加载?

  • 在这种情况下可能是什么情况:
    function fillTree(){...}
    function checkSelectedBoxes(){...}
    
    fillTree(); // This take time to get data. onLoad() doesnt work.
    setTimeout(function(){ checkSelectedBoxes()  },5000);
    

    即使增加了时间间隔,这也会返回空值。 fillTree()会暂停执行吗?

    最佳答案

    不,setTimeout不会等您(因此,JS没有暂停功能)。 setTimeout的工作在稍后的时间被搁置,并允许执行下一行。当达到该超时时间时,它将把该任务插入执行行。当没有其他代码在运行时,它将执行所指示的功能。

    您要做的是给fillTree()回调,并在完成后执行。

    function fillTree(callback){
    
        //do something very long
    
        callback(); //execute passed function when it's done
    }
    
    fillTree(function(){
        checkSelectedBoxes(); //executes only when fillTree finishes
    })
    

    07-24 09:44