我很好奇setTimeout返回了什么.所以我做了一个快速测试:
var thing = setTimeout(function(){},1);
Run Code Online (Sandbox Code Playgroud)
让我感到惊讶的是,它给了我一个数字.1351每次都不一样.
那真的是它返回的是一个数字吗?所以我也可以这样做吗?
clearTimeout(1351);
Run Code Online (Sandbox Code Playgroud)
很混乱...
rid*_*rid 47
它是一个句柄(一个唯一的标识符).当您创建超时时,JavaScript运行时将句柄与您创建的超时相关联,并且它可以通过句柄setTimeout()返回来识别超时.当你运行时clearTimeout(),它会通过查看你传递的唯一句柄知道你正在谈论什么超时.
And*_*510 12
它可以是一个Object,我测试它node.js:
var sto = setTimeout(
function(){console.log('ping');},
1000
);
console.log(sto);
Run Code Online (Sandbox Code Playgroud)
输出是:
{ _idleTimeout: 1000,
_idlePrev:
{ '0': [Function: listOnTimeout],
_idleNext: [Circular],
_idlePrev: [Circular],
msecs: 1000 },
_idleNext:
{ '0': [Function: listOnTimeout],
_idleNext: [Circular],
_idlePrev: [Circular],
msecs: 1000 },
_idleStart: 2413359232,
_onTimeout: [Function],
_repeat: false,
domain:
{ domain: null,
_events: { error: [Function] },
_maxListeners: undefined,
members: [] } }
Run Code Online (Sandbox Code Playgroud)