
setTimeout返回计时器句柄,您可以使用该句柄停止超时
clearTimeout。
因此,例如:
function setBgPosition() { var c = 0, timer = 0; var numbers = [0, -120, -240, -360, -480, -600, -720]; function run() { Ext.get('common-spinner').setStyle('background-position', numbers[c++] + 'px 0px'); if (c >= numbers.length) { c = 0; } timer = setTimeout(run, 200); } timer = setTimeout(run, 200); return stop; function stop() { if (timer) { clearTimeout(timer); timer = 0; }}因此,您可以将其用作:
var stop = setBgPosition();// ...later, when you're ready to stop...stop();
请注意
setBgPosition,我没有将其再次调用,而是将其重新设置
c为
0。否则,这将行不通。另请注意,我已将
0超时未挂起时用作句柄值。
0不是来自的有效返回值,
setTimeout因此会产生一个方便的标志。
这也是(少数)的地方我想你会更好用的一个
setInterval,而不是
setTimeout。
setInterval重复。所以:
function setBgPosition() { var c = 0; var numbers = [0, -120, -240, -360, -480, -600, -720]; function run() { Ext.get('common-spinner').setStyle('background-position', numbers[c++] + 'px 0px'); if (c >= numbers.length) { c = 0; } } return setInterval(run, 200);}像这样使用:
var timer = setBgPosition();// ...later, when you're ready to stop...clearInterval(timer);
尽管如此,我还是想找到一种方法,通过检测已满足某些完成条件来使
setBgPosition事情 本身 停止。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)