函数在变量更新后的某个时间点执行
javascript : function to execute at a later point in time once variables updated
这是Javascript在单线程上线性执行的问题。
使用 setTimeout(function(){},time);
被求值并立即执行function()
。
我正在寻找一个方法来执行function()
在x秒,例如dom已经从ajax调用更新后。
这是怎么做的?
换句话说,只需要"暂停"脚本,然后让它知道何时执行。
如果您在函数(); 中做了类似的操作 var a= document.getElementbyId("anid").innerHTML;
var a将在setInterval被处理时收集,而不是在函数执行时的x秒内收集。
谢谢…
setTimeout的例子不会立即执行函数,而是在等待'time'指定的毫秒数之后。例如,要在3秒内显示警报:
window.setTimeout ( function() { alert ('Test'); }, 3000);
请注意,即使使用0作为时间值,函数的执行仍然会延迟到当前Javascript执行堆栈结束,这在某些情况下是有用的,但在您的情况下不是。
正如santiagoIT所说,您永远不应该依赖这种策略来执行任何依赖于已完成的特定AJAX调用的操作。相反,您应该使用回调函数。这是因为当使用计时器时,在函数执行时DOM仍然可能没有准备好(例如,如果计算机运行缓慢),这种线程问题在计算机科学中称为"竞争条件"。
要避免竞争条件,请使用回调函数。使用jQuery库的示例如下:
$.get("/url/ajax/getSomething", parameterArray, callbackFunction);
function callbackFunction(data) {
// in this example, 'data' contains the response object
// see each function doc to find their callback arguments
alert ('Work with DOM here');
}
最好在ajax调用结束后执行函数。您可以注册一个成功/失败函数,该函数将在调用完成后被调用。这是正确的做法。
下面是一个jquery的例子:$.ajax({
url: "test.html",
context: document.body,
success: function(){
// here you do whatever you want after ajax is finished
}
});
编辑**根据下面Quentin的评论,删除了将回调函数作为字符串传递的建议,因为这确实不是一个好的做法。
相关文章:
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 如何优化这个jquery循环的执行时间
- 如何在长时间执行JavaScript期间显示微调器
- 不确定react.js的异步执行时间
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 如何使用 javascript 停止对 asp.net 进行正在进行的回发(长时间运行的执行)
- 为什么这个正则表达式需要这么长时间才能执行
- 如何在boomrang页面加载时间中添加ajax执行时间
- 作为自动化测试的一部分,监控特定的js事件以及执行它们所需的时间
- javascript执行具有时间间隔的函数
- 执行时间,AMPScript/JavaScript
- 如何在浏览器中使用F12控制台在javascript中每隔一段时间执行一次
- 在给定时间执行不同的nodejs脚本
- 如何使用setTimeout或setInterval设置多个(可能多于两个)函数在不同时间执行
- YUI Compressor Maven插件在错误的时间执行,tomcat插件没有使用YUI - Compressor输
- 在长时间执行过程之前和之后使用Jquery更改元素css
- 在按下鼠标按钮的整个时间执行按钮事件处理程序
- 每次都以相同的持续时间执行代码
- JW播放器根据经过的时间执行操作