延迟Javascript/Java中函数内的代码执行
Delay code execution within a function in Javascript / Java
我有一个onclick javascript函数(通过.jsp文件从DOJO组件调用),其中两个UI组件同时加载到js文件中(通过对Spring Controller(java文件)的AJAX调用并返回到jsp/javascript文件)
问题是第二组件在第一组件之前加载,并且没有显示规定的数据。我想知道如何在调用javascript中的代码之前设置延迟,以毫秒为单位延迟第二个组件。
注:
-
我在控制器中使用了Thread.sleep(毫秒),它似乎工作得很好,解决了我的问题。但我不想利用这一点,因为我知道它会带来风险。所以请求一个替代方案而不是这个。
-
此外,我使用了setTimeOut()函数,但setTimeOut()需要一个函数作为参数。我只需要第一次将函数中的代码延迟几毫秒。从第二次开始,我不想延迟调用代码。
请求您的宝贵意见。
JavaScript不允许阻塞线程,因此您可以使用的唯一选项是setTimeOut()函数。或者,当第一个组件在加载时通知第二个组件,而此时第二个部件重新加载自己时,您可以实现该机制。
也许您的问题可以通过使用http://dojotoolkit.org/reference-guide/1.8/dojo/domReady.html?highlight=domready以确保tho-dom已完全加载
或使用dojo/deffered
http://dojotoolkit.org/reference-guide/1.8/dojo/Deferred.html?highlight=domready
关于
我假设您使用dojo/xhr
进行ajax调用,而您的解决方案是使用DeferredList
。
http://dojotoolkit.org/reference-guide/1.9/dojo/DeferredList.html
var d1 = xhr(...);
d2 = xhr(...);
var dl = new DeferredList([d1, d2]);
dl.then(function(result){
// Execute the code that requires both calls to be completed.
});
- setTimeout函数能否在其前面的代码执行之前激发
- 延迟代码执行,直到下载完成
- 奇怪的javascript代码执行顺序
- 将字符串作为一段 HTML/javascript 代码执行
- 使用AngularJS,如何在视图和控制器同步特定更改后触发代码执行
- onKeyUp 导致代码执行两次
- JQuery:将参数传递给插件以限制代码执行
- JavaScript代码执行时间
- 基本的JavaScript代码执行
- JavascriptCore:从本机代码执行JavaScript定义的回调函数
- 脚本标记的位置会影响代码执行
- 页面脚本未使用 Salesforce Web-to-Lead 代码执行
- GM_xmlhttpRequest 成功回调“onload”未为注入的代码执行
- 停止所有代码执行,直到 IFrame 完全加载
- 纯 Javascript 代码执行停止混合应用程序中的离子加载指示器
- Javascript代码执行顺序
- Javascript:在嵌套函数中使用条件语句停止代码执行
- Node.js代码执行顺序
- 什么触发JavaScript代码执行
- onreadystatechange导致php代码执行两次