Joh*_*ohn 2 javascript function
这是 Javascript 在单个线程上线性执行的问题。
使用
setTimeout(function(){},time);
Run Code Online (Sandbox Code Playgroud)
被评估并function()立即执行。
我正在寻找一种function()在 x 秒内执行的方法,例如在从 ajax 调用更新 dom 之后。
这是怎么做的?
换句话说,只需要“暂停”脚本,然后让它知道何时执行。
为了清楚起见,如果您在 function() 中做了类似的事情;
var a= document.getElementbyId("anid").innerHTML;
Run Code Online (Sandbox Code Playgroud)
var a 将在处理 setInterval 时收集,而不是在函数执行时的 x 秒内收集。
谢谢...
您使用setTimeout 的示例不会立即执行该函数,而是在等待“time”指定的毫秒数之后。例如,要在 3 秒内显示警报:
window.setTimeout ( function() { alert ('Test'); }, 3000);
Run Code Online (Sandbox Code Playgroud)
请注意,即使您使用 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');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11359 次 |
| 最近记录: |