2017-08-31 55 views
-1

我推一个setTimeout函数到数组中,当我console.log(ARR),ARR的值是一个整数。任何人都可以为我解释!谢谢!代码是这样的:将一个函数推入数组中。为什么数组的值是一个整数?

var arr=[]; 
arr.push(
setTimeout(function(){ 
$(selector).text(something); 
}); 
); 
console.log(arr); // [2] 

另外,我不明白推入一个函数到一个数组的目的!任何人都可以帮助我。提前致谢!

+2

你并没有将一个函数推入数组中。你**调用''setTimeout()'并将**返回值**推入数组中。 – Pointy

+0

你不推动一个函数,你推一个setTimeout句柄。 – Keith

+0

因为'setTimeout()'的返回值是一个整数? https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout''我不明白推入一个函数到数组的目的!“ - 好吧,如果你想要一组函数,你可以做到这一点。但这不是这个代码的作用。 – David

回答

0

你可以通过使用clearTimeout(id)来做到这一点。

您不会在数组中插入函数,而是执行函数的结果(在这种情况下,由setTimeout生成的超时ID)。

我也不明白你为什么把它放在一个数组中,作为开发人员你应该知道它....!?

+0

谢谢!我将它推入数组的原因是稍后使用clearTimeout()。 –

2

问题出在你输入数组的值是从setTimeout()返回的定时器的标识符,它恰好是一个整数。它的不是包含输入的jQuery对象。

您需要重新安排你的逻辑,使得push()setTimeout()

var arr = []; 
setTimeout(function() { 
    arr.push($(selector).text(something)); 
    console.log(arr); 
}, 1000); 
+0

$(selector).text(something)改变选择器的文本,然后你为什么要在数组中推动它? –

+0

这将返回持有选定对象的jQuery对象。虽然OP不清楚他究竟想要怎么处理它,但是希望将该对象引用存储在数组中以备后用。 –

0

我推setTimeout函数到一个数组,

不,你不。您将结果 - 返回值 - 将setTimeout函数调用到数组中。

另外,我不明白推功能于ARRA

。例如这个目的,你可能会根据一些指标值的函数来调用,或者你正在创建一个堆栈或要执行的操作队列。

0

最好的办法是使用objects在那里你可以一个函数来关联对象的关键:所以,如果你想停止超时的setTimeout返回超时ID,

var obj={}; 
 
obj.testFn = function(){ 
 
    setTimeout(function(){ 
 
    alert('invoked'); 
 
    //$(selector).text(something); 
 
    },2000); 
 
} 
 

 
obj.testFn(); 
 
console.log(obj);

相关问题