Javascript JS setTimeout()可选
正如我所解释的,我不能再使用window.setTimeout()和任何经典的窗口函数,如clearInterval等;但我需要将JS块代码作为异步代码调用 这就是我使用XHR请求的原因 使用XHR实现window.setTimeout()的智能替代方案的最佳方法是什么Javascript JS setTimeout()可选,javascript,xmlhttprequest,settimeout,Javascript,Xmlhttprequest,Settimeout,正如我所解释的,我不能再使用window.setTimeout()和任何经典的窗口函数,如clearInterval等;但我需要将JS块代码作为异步代码调用 这就是我使用XHR请求的原因 使用XHR实现window.setTimeout()的智能替代方案的最佳方法是什么 // Not working :( setTimeout(function(){ document.getElementById("messageTimer").innerHTML = "Happy New Year !
// Not working :(
setTimeout(function(){
document.getElementById("messageTimer").innerHTML = "Happy New Year ! (old version)";
}, 10);
// with or without jQuery - but XHR
jQuery.ajax({
url: "/local/url/easy",
success: function(html, textStatus, jqXHR) {
// a loop ?
// timeout done ?
document.getElementById("messageTimer").innerHTML = "Happy New Year ! (working version)"
}});
我的小提琴测试:
Tks尝试使用,它现在使用requestAnimationFrame
//创建一个jQ对象,其中elem的索引设置为[0]
//值为0`{to:0}的普通对象`
//链接到jQ对象的call.animate()
//将`{to:0}`值从0到1设置动画
//$({to:0})。设置({to:1})动画
var持续时间=5000;
$({to:0}).animate({to:1},duration,function()){
//在“持续时间”过后做事情
$(“#messageTimer”).html(“新年快乐(工作版)”)
})
像这样的东西怎么样
var delay = 10000; // milliseconds
var before = Date.now());
while (Date.now() < before + delay) {};
alert('The delay has passed!');
var delay=10000;//毫秒
var before=Date.now());
while(Date.now()
此外,您可能对Promise对象感兴趣。这会给你带来这样的东西:
var customDelay = new Promise(function(resolve) {
var delay = 10000; // milliseconds
var before = Date.now();
while (Date.now() < before + delay) {};
resolve('Success!');
});
customDelay.then(function(msg) {
document.getElementById("messageTimer").innerHTML = "Happy New Year !';
});
var customDelay=新承诺(函数(解析){
var delay=10000;//毫秒
var before=Date.now();
while(Date.now()
---编辑---
Promise对象是ECMAScript 6的一部分,因此存在向后兼容性问题
幸运的是,jQuery确实有自己的承诺实现!
有关文档,请参阅本页。实现将与之类似。Thxs phenxd!它应该可以做到这一点。Promise听起来是async的优雅解决方案。PB:Promise不被IE 9认可:(这不是异步的,即使有承诺,while循环将冻结UI,并且在循环运行时不会执行其他js。我应该完全删除我的答案还是编辑它?这个{to:0}和{to:1}表示什么?请澄清。
$({to:0})
在索引处创建jQuery对象where元素[0]
是普通对象{to:0}
,我们可以调用链接到jQuery对象的.animate()
,该jQuery对象将to
属性从0
设置为1
对象的动画