Javascript 在API完全加载之前或之后调用函数

Javascript 在API完全加载之前或之后调用函数,javascript,Javascript,我有一个按钮,如果单击它,我需要调用一个函数,该函数隐藏由异步加载的js文件初始化的另一个元素。但是,我可以隐藏元素的唯一方法是通过JavaCScript API。没有为通过API创建的iframe分配ID或类,因此我不得不为该脚本使用JSAPI 单击我的按钮时,我执行以下代码: if(typeof Tawk_API.hideWidget === "function"){ Tawk_API.hideWidget(); }else{ Tawk_API.onLoad =

我有一个按钮,如果单击它,我需要调用一个函数,该函数隐藏由异步加载的js文件初始化的另一个元素。但是,我可以隐藏元素的唯一方法是通过JavaCScript API。没有为通过API创建的iframe分配ID或类,因此我不得不为该脚本使用JSAPI

单击我的按钮时,我执行以下代码:

if(typeof Tawk_API.hideWidget === "function"){
  Tawk_API.hideWidget();
}else{
  Tawk_API.onLoad = function(){
      Tawk_API.hideWidget();
  };
}
如果小部件已经加载,此函数将成功隐藏该小部件;如果尚未加载,则添加一个onLoad


我知道JavaScript不是多线程的,但是有没有一个原因,处理器可能会把主线程交给我的函数中间加载AcYNC JS文件,这可能会导致我的条件失败吗?我想确保在我的函数执行

else
时,不会加载
js
文件,这将阻止我的脚本正确隐藏小部件。

您可以确保此代码是正确的


了解有关JavaScript的更多信息

您可以确保此代码是正确的


了解有关JavaScript的更多信息JavaScript引擎将以阻塞方式执行所有同步代码,直到达到异步操作(I/O、网络调用等)。然后在启动这个异步操作之后,它将返回执行更多同步代码。如果异步操作在同步代码期间完成,则只有在完全执行阻塞部分时才会调用回调


因此,您的代码是安全的:)

Javascript引擎将以阻塞方式执行所有同步代码,直到它达到异步操作(I/O、网络调用等)。然后在启动这个异步操作之后,它将返回执行更多同步代码。如果异步操作在同步代码期间完成,则只有在完全执行阻塞部分时才会调用回调


因此,您的代码是安全的:)

JavaScript不是多线程的
处理器移交主线程
不能同时为真。执行流不只是随机地向前或向后跳跃。
JavaScript不是多线程的
处理器移交主线程
不可能都是真的。执行流程不仅仅是随机向前或向后跳跃。