JavaScript在对象中设置超时时间
JavaScript setTimeout in Object
我试图给一个对象一个倒计时定时器,当倒计时下来,它应该调用一个函数,从数组中删除这个对象。
array = [];
var object = {
'name' : 'user',
'limit' : function() {
setTimeout(destroyMe(this),10000);
}
}
array.push(object);
var destroyMe = function(obj) {
array.remove(obj);
}
我知道this可能有问题,但是超时函数根本不工作,甚至不像这样:
var object = {
'name' : 'user',
'limit' : function() {
setTimeout(console.log("dd"),3000);
}
}
也许有人可以告诉我我的setTimeout版本的问题。thx
setTimeout接受一个函数的引用。你的代码正在调用这个函数。
应该改成:
var object =
{
'name' : 'user',
'limit' : function()
{
setTimeout(function() { destroyMe(this); }, 10000);
}
}
(在这种情况下使用this
可能会有问题,请尝试一下!)
var object =
{
'name' : 'user',
'limit' : function()
{
setTimeout( function() { console.log("dd"); },3000);
}
}
你需要传递一个函数给setTimeout
,而不是一个函数调用。
var object = {
'name' : 'user',
'limit' : function() {
setTimeout(function() {
destroyMe(this)
}, 10000);
}
};
正如你已经知道的,this
可能不会做你所期望的。用console.log("dd")
替换destroyMe(this)
应该会导致您期望的行为。
setTimeout
要么接受回调(一个函数,而不是带参数的函数调用),要么接受引号中的代码。然而,正如在这个问题中所指出的,传递字符串只允许出于历史原因——在实践中没有任何好的理由这样做。
但是,为了完整起见,一种方法是:
var object = {
'name' : 'user',
'limit' : function() {
setTimeout('console.log("dd")', 3000);
}
}
相关文章:
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- jasmine 2-在jasmine指定的超时时间内未调用异步回调.DEFAULT_TIMEOUT_INTERVAL
- set超时,超时时间较短,超时时间较长
- 设置函数的超时时间
- 在警报框上设置超时时间
- 设置最小时间和超时时间
- 摩卡,超过2000ms的超时时间.确保在这个测试中调用了done()回调
- 设置屏保超时时间
- For循环在超时时间内具有动态数字
- 反复调用一个函数,直到它的承诺被解决,或者直到设置的超时时间过去
- 设置加载apache的超时时间
- 我无法在Selenium独立上编辑超时时间
- 在Node.js中设置HTTP超时时间
- 当XMLHttpRequest处于“pending”状态时;状态(在Chrome中)是否将该时间计入它的超时时间
- 如何设置浏览器创建的桌面通知的关闭超时时间?
- 在Div背景中加载图像时设置超时时间
- 设置ondrop函数的超时时间
- Jquery在弹出窗口设置超时时间
- 设置超时时间打开2个窗口
- 使用catch in promise进行断言超过超时时间