为什么不应该立即运行的 JavaScript 函数会造成一些延迟?

By simon at 8 天前 • 0人收藏 • 5人看过

我有两个功能滑雪场及Getsourcecode. 我想滑雪场在提交后立即执行(隐藏对话框) ,但是Getsourcecode相当长,所以我让它稍后执行。 然而,一些延迟仍然发生在我点击提交和滑雪场起作用了。 当我移除Getsourcecode,对话框可以立即消失,但它总是延迟,只要有Getsourcecode,即使当我Settimeout它。

Queryselector ("[ type submit ]"). Onclick 函数(event){ showhide ('dialogBox') ; if (options [0])。 函数 getSourceCode (){ var htmlastext ajax ("something. asp x") ; 函数 HTML (text){ this.fullCode (new DOMParser ())。 句子太长,请短一点。 句子太长,请短一点。 Removet.removechild (removettaglist [ i ]) ; }}} var htmlDoc new HTML (htmlastext) ; var htmlDoc.fullcode; htmlDoc.modify () ; htmlastext (new XMLSerializer ()). 序列化 tostring (html) ; var txtarea document.createElement ("textarea") ; txtarea. innerhtml htmlastext; htlastext txtarea. value; document.getElementById ("encodedSourceCode")。 值 btoa (htmlastext) ; }

为什么延迟发生在滑雪场? 函数不是同步的吗? 不是Settimeout能够在超时前阻止参数函数的执行吗? 如何在提交后隐藏对话框,而不删除Getsourcecode?

1 个回复 | 最后更新于 8 天前
8 天前   #1

问题出在这一行:

Settimeout (getSourceCode () ,10000) ;

因为Getsourcecode函数马上就会接到电话(因为()之后) ,并且只有它的返回值传递给Settimeout.

去掉括号在你的函数之后,你的函数将被传递给Settimeout,它会内部称之为。

(getSourceCode,10000) ;

登录后方可回帖

Loading...