406 lines
27 KiB
HTML
406 lines
27 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width">
|
|
<meta name="nodejs.org:node-version" content="v12.22.12">
|
|
<title>Timers | Node.js v12.22.12 Documentation</title>
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic&display=fallback">
|
|
<link rel="stylesheet" href="assets/style.css">
|
|
<link rel="stylesheet" href="assets/hljs.css">
|
|
<link rel="canonical" href="https://nodejs.org/api/timers.html">
|
|
</head>
|
|
<body class="alt apidoc" id="api-section-timers">
|
|
<div id="content" class="clearfix">
|
|
<div id="column2" class="interior">
|
|
<div id="intro" class="interior">
|
|
<a href="/" title="Go back to the home page">
|
|
Node.js
|
|
</a>
|
|
</div>
|
|
<ul>
|
|
<li><a href="documentation.html" class="nav-documentation">About this documentation</a></li>
|
|
<li><a href="synopsis.html" class="nav-synopsis">Usage and example</a></li>
|
|
</ul>
|
|
<hr class="line">
|
|
<ul>
|
|
<li><a href="assert.html" class="nav-assert">Assertion testing</a></li>
|
|
<li><a href="async_hooks.html" class="nav-async_hooks">Async hooks</a></li>
|
|
<li><a href="buffer.html" class="nav-buffer">Buffer</a></li>
|
|
<li><a href="addons.html" class="nav-addons">C++ Addons</a></li>
|
|
<li><a href="n-api.html" class="nav-n-api">C/C++ Addons with N-API</a></li>
|
|
<li><a href="embedding.html" class="nav-embedding">C++ Embedder API</a></li>
|
|
<li><a href="child_process.html" class="nav-child_process">Child Processes</a></li>
|
|
<li><a href="cluster.html" class="nav-cluster">Cluster</a></li>
|
|
<li><a href="cli.html" class="nav-cli">Command line options</a></li>
|
|
<li><a href="console.html" class="nav-console">Console</a></li>
|
|
<li><a href="crypto.html" class="nav-crypto">Crypto</a></li>
|
|
<li><a href="debugger.html" class="nav-debugger">Debugger</a></li>
|
|
<li><a href="deprecations.html" class="nav-deprecations">Deprecated APIs</a></li>
|
|
<li><a href="dns.html" class="nav-dns">DNS</a></li>
|
|
<li><a href="domain.html" class="nav-domain">Domain</a></li>
|
|
<li><a href="errors.html" class="nav-errors">Errors</a></li>
|
|
<li><a href="events.html" class="nav-events">Events</a></li>
|
|
<li><a href="fs.html" class="nav-fs">File system</a></li>
|
|
<li><a href="globals.html" class="nav-globals">Globals</a></li>
|
|
<li><a href="http.html" class="nav-http">HTTP</a></li>
|
|
<li><a href="http2.html" class="nav-http2">HTTP/2</a></li>
|
|
<li><a href="https.html" class="nav-https">HTTPS</a></li>
|
|
<li><a href="inspector.html" class="nav-inspector">Inspector</a></li>
|
|
<li><a href="intl.html" class="nav-intl">Internationalization</a></li>
|
|
<li><a href="modules.html" class="nav-modules">Modules: CommonJS modules</a></li>
|
|
<li><a href="esm.html" class="nav-esm">Modules: ECMAScript modules</a></li>
|
|
<li><a href="module.html" class="nav-module">Modules: <code>module</code> API</a></li>
|
|
<li><a href="packages.html" class="nav-packages">Modules: Packages</a></li>
|
|
<li><a href="net.html" class="nav-net">Net</a></li>
|
|
<li><a href="os.html" class="nav-os">OS</a></li>
|
|
<li><a href="path.html" class="nav-path">Path</a></li>
|
|
<li><a href="perf_hooks.html" class="nav-perf_hooks">Performance hooks</a></li>
|
|
<li><a href="policy.html" class="nav-policy">Policies</a></li>
|
|
<li><a href="process.html" class="nav-process">Process</a></li>
|
|
<li><a href="punycode.html" class="nav-punycode">Punycode</a></li>
|
|
<li><a href="querystring.html" class="nav-querystring">Query strings</a></li>
|
|
<li><a href="readline.html" class="nav-readline">Readline</a></li>
|
|
<li><a href="repl.html" class="nav-repl">REPL</a></li>
|
|
<li><a href="report.html" class="nav-report">Report</a></li>
|
|
<li><a href="stream.html" class="nav-stream">Stream</a></li>
|
|
<li><a href="string_decoder.html" class="nav-string_decoder">String decoder</a></li>
|
|
<li><a href="timers.html" class="nav-timers active">Timers</a></li>
|
|
<li><a href="tls.html" class="nav-tls">TLS/SSL</a></li>
|
|
<li><a href="tracing.html" class="nav-tracing">Trace events</a></li>
|
|
<li><a href="tty.html" class="nav-tty">TTY</a></li>
|
|
<li><a href="dgram.html" class="nav-dgram">UDP/datagram</a></li>
|
|
<li><a href="url.html" class="nav-url">URL</a></li>
|
|
<li><a href="util.html" class="nav-util">Utilities</a></li>
|
|
<li><a href="v8.html" class="nav-v8">V8</a></li>
|
|
<li><a href="vm.html" class="nav-vm">VM</a></li>
|
|
<li><a href="wasi.html" class="nav-wasi">WASI</a></li>
|
|
<li><a href="worker_threads.html" class="nav-worker_threads">Worker threads</a></li>
|
|
<li><a href="zlib.html" class="nav-zlib">Zlib</a></li>
|
|
</ul>
|
|
<hr class="line">
|
|
<ul>
|
|
<li><a href="https://github.com/nodejs/node" class="nav-https-github-com-nodejs-node">Code repository and issue tracker</a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div id="column1" data-id="timers" class="interior">
|
|
<header>
|
|
<h1>Node.js v12.22.12 Documentation</h1>
|
|
<div id="gtoc">
|
|
<ul>
|
|
<li>
|
|
<a href="index.html">Index</a>
|
|
</li>
|
|
<li>
|
|
<a href="all.html">View on single page</a>
|
|
</li>
|
|
<li>
|
|
<a href="timers.json">View as JSON</a>
|
|
</li>
|
|
|
|
<li class="version-picker">
|
|
<a href="#">View another version <span>▼</span></a>
|
|
<ol class="version-picker"><li><a href="https://nodejs.org/docs/latest-v17.x/api/timers.html">17.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v16.x/api/timers.html">16.x <b>LTS</b></a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v15.x/api/timers.html">15.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v14.x/api/timers.html">14.x <b>LTS</b></a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v13.x/api/timers.html">13.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v12.x/api/timers.html">12.x <b>LTS</b></a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v11.x/api/timers.html">11.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v10.x/api/timers.html">10.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v9.x/api/timers.html">9.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v8.x/api/timers.html">8.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v7.x/api/timers.html">7.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v6.x/api/timers.html">6.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v5.x/api/timers.html">5.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v4.x/api/timers.html">4.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v0.12.x/api/timers.html">0.12.x</a></li>
|
|
<li><a href="https://nodejs.org/docs/latest-v0.10.x/api/timers.html">0.10.x</a></li></ol>
|
|
</li>
|
|
|
|
<li class="edit_on_github"><a href="https://github.com/nodejs/node/edit/master/doc/api/timers.md"><span class="github_icon"><svg height="16" width="16" viewBox="0 0 16.1 16.1" fill="currentColor"><path d="M8 0a8 8 0 0 0-2.5 15.6c.4 0 .5-.2.5-.4v-1.5c-2 .4-2.5-.5-2.7-1 0-.1-.5-.9-.8-1-.3-.2-.7-.6 0-.6.6 0 1 .6 1.2.8.7 1.2 1.9 1 2.4.7 0-.5.2-.9.5-1-1.8-.3-3.7-1-3.7-4 0-.9.3-1.6.8-2.2 0-.2-.3-1 .1-2 0 0 .7-.3 2.2.7a7.4 7.4 0 0 1 4 0c1.5-1 2.2-.8 2.2-.8.5 1.1.2 2 .1 2.1.5.6.8 1.3.8 2.2 0 3-1.9 3.7-3.6 4 .3.2.5.7.5 1.4v2.2c0 .2.1.5.5.4A8 8 0 0 0 16 8a8 8 0 0 0-8-8z"/></svg></span>Edit on GitHub</a></li>
|
|
</ul>
|
|
</div>
|
|
<hr>
|
|
</header>
|
|
|
|
<div id="toc">
|
|
<h2>Table of Contents</h2>
|
|
<ul>
|
|
<li><span class="stability_2"><a href="#timers_timers">Timers</a></span>
|
|
<ul>
|
|
<li><a href="#timers_class_immediate">Class: <code>Immediate</code></a>
|
|
<ul>
|
|
<li><a href="#timers_immediate_hasref"><code>immediate.hasRef()</code></a></li>
|
|
<li><a href="#timers_immediate_ref"><code>immediate.ref()</code></a></li>
|
|
<li><a href="#timers_immediate_unref"><code>immediate.unref()</code></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#timers_class_timeout">Class: <code>Timeout</code></a>
|
|
<ul>
|
|
<li><a href="#timers_timeout_hasref"><code>timeout.hasRef()</code></a></li>
|
|
<li><a href="#timers_timeout_ref"><code>timeout.ref()</code></a></li>
|
|
<li><a href="#timers_timeout_refresh"><code>timeout.refresh()</code></a></li>
|
|
<li><a href="#timers_timeout_unref"><code>timeout.unref()</code></a></li>
|
|
<li><a href="#timers_timeout_symbol_toprimitive"><code>timeout[Symbol.toPrimitive]()</code></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#timers_scheduling_timers">Scheduling timers</a>
|
|
<ul>
|
|
<li><a href="#timers_setimmediate_callback_args"><code>setImmediate(callback[, ...args])</code></a></li>
|
|
<li><a href="#timers_setinterval_callback_delay_args"><code>setInterval(callback, delay[, ...args])</code></a></li>
|
|
<li><a href="#timers_settimeout_callback_delay_args"><code>setTimeout(callback, delay[, ...args])</code></a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#timers_cancelling_timers">Cancelling timers</a>
|
|
<ul>
|
|
<li><a href="#timers_clearimmediate_immediate"><code>clearImmediate(immediate)</code></a></li>
|
|
<li><a href="#timers_clearinterval_timeout"><code>clearInterval(timeout)</code></a></li>
|
|
<li><a href="#timers_cleartimeout_timeout"><code>clearTimeout(timeout)</code></a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div id="apicontent">
|
|
<h1>Timers<span><a class="mark" href="#timers_timers" id="timers_timers">#</a></span></h1>
|
|
|
|
<p></p><div class="api_stability api_stability_2"><a href="documentation.html#documentation_stability_index">Stability: 2</a> - Stable</div><p></p>
|
|
<p><strong>Source Code:</strong> <a href="https://github.com/nodejs/node/blob/v12.22.12/lib/timers.js">lib/timers.js</a></p>
|
|
<p>The <code>timer</code> module exposes a global API for scheduling functions to
|
|
be called at some future period of time. Because the timer functions are
|
|
globals, there is no need to call <code>require('timers')</code> to use the API.</p>
|
|
<p>The timer functions within Node.js implement a similar API as the timers API
|
|
provided by Web Browsers but use a different internal implementation that is
|
|
built around the Node.js <a href="https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout">Event Loop</a>.</p>
|
|
<h2>Class: <code>Immediate</code><span><a class="mark" href="#timers_class_immediate" id="timers_class_immediate">#</a></span></h2>
|
|
<p>This object is created internally and is returned from <a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a>. It
|
|
can be passed to <a href="timers.html#timers_clearimmediate_immediate"><code>clearImmediate()</code></a> in order to cancel the scheduled
|
|
actions.</p>
|
|
<p>By default, when an immediate is scheduled, the Node.js event loop will continue
|
|
running as long as the immediate is active. The <code>Immediate</code> object returned by
|
|
<a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a> exports both <code>immediate.ref()</code> and <code>immediate.unref()</code>
|
|
functions that can be used to control this default behavior.</p>
|
|
<h3><code>immediate.hasRef()</code><span><a class="mark" href="#timers_immediate_hasref" id="timers_immediate_hasref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v11.0.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type" class="type"><boolean></a></li>
|
|
</ul>
|
|
<p>If true, the <code>Immediate</code> object will keep the Node.js event loop active.</p>
|
|
<h3><code>immediate.ref()</code><span><a class="mark" href="#timers_immediate_ref" id="timers_immediate_ref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v9.7.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="timers.html#timers_class_immediate" class="type"><Immediate></a> a reference to <code>immediate</code></li>
|
|
</ul>
|
|
<p>When called, requests that the Node.js event loop <em>not</em> exit so long as the
|
|
<code>Immediate</code> is active. Calling <code>immediate.ref()</code> multiple times will have no
|
|
effect.</p>
|
|
<p>By default, all <code>Immediate</code> objects are "ref'ed", making it normally unnecessary
|
|
to call <code>immediate.ref()</code> unless <code>immediate.unref()</code> had been called previously.</p>
|
|
<h3><code>immediate.unref()</code><span><a class="mark" href="#timers_immediate_unref" id="timers_immediate_unref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v9.7.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="timers.html#timers_class_immediate" class="type"><Immediate></a> a reference to <code>immediate</code></li>
|
|
</ul>
|
|
<p>When called, the active <code>Immediate</code> object will not require the Node.js event
|
|
loop to remain active. If there is no other activity keeping the event loop
|
|
running, the process may exit before the <code>Immediate</code> object's callback is
|
|
invoked. Calling <code>immediate.unref()</code> multiple times will have no effect.</p>
|
|
<h2>Class: <code>Timeout</code><span><a class="mark" href="#timers_class_timeout" id="timers_class_timeout">#</a></span></h2>
|
|
<p>This object is created internally and is returned from <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a> and
|
|
<a href="timers.html#timers_setinterval_callback_delay_args"><code>setInterval()</code></a>. It can be passed to either <a href="timers.html#timers_cleartimeout_timeout"><code>clearTimeout()</code></a> or
|
|
<a href="timers.html#timers_clearinterval_timeout"><code>clearInterval()</code></a> in order to cancel the scheduled actions.</p>
|
|
<p>By default, when a timer is scheduled using either <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a> or
|
|
<a href="timers.html#timers_setinterval_callback_delay_args"><code>setInterval()</code></a>, the Node.js event loop will continue running as long as the
|
|
timer is active. Each of the <code>Timeout</code> objects returned by these functions
|
|
export both <code>timeout.ref()</code> and <code>timeout.unref()</code> functions that can be used to
|
|
control this default behavior.</p>
|
|
<h3><code>timeout.hasRef()</code><span><a class="mark" href="#timers_timeout_hasref" id="timers_timeout_hasref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v11.0.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type" class="type"><boolean></a></li>
|
|
</ul>
|
|
<p>If true, the <code>Timeout</code> object will keep the Node.js event loop active.</p>
|
|
<h3><code>timeout.ref()</code><span><a class="mark" href="#timers_timeout_ref" id="timers_timeout_ref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.9.1</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> a reference to <code>timeout</code></li>
|
|
</ul>
|
|
<p>When called, requests that the Node.js event loop <em>not</em> exit so long as the
|
|
<code>Timeout</code> is active. Calling <code>timeout.ref()</code> multiple times will have no effect.</p>
|
|
<p>By default, all <code>Timeout</code> objects are "ref'ed", making it normally unnecessary
|
|
to call <code>timeout.ref()</code> unless <code>timeout.unref()</code> had been called previously.</p>
|
|
<h3><code>timeout.refresh()</code><span><a class="mark" href="#timers_timeout_refresh" id="timers_timeout_refresh">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v10.2.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> a reference to <code>timeout</code></li>
|
|
</ul>
|
|
<p>Sets the timer's start time to the current time, and reschedules the timer to
|
|
call its callback at the previously specified duration adjusted to the current
|
|
time. This is useful for refreshing a timer without allocating a new
|
|
JavaScript object.</p>
|
|
<p>Using this on a timer that has already called its callback will reactivate the
|
|
timer.</p>
|
|
<h3><code>timeout.unref()</code><span><a class="mark" href="#timers_timeout_unref" id="timers_timeout_unref">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.9.1</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> a reference to <code>timeout</code></li>
|
|
</ul>
|
|
<p>When called, the active <code>Timeout</code> object will not require the Node.js event loop
|
|
to remain active. If there is no other activity keeping the event loop running,
|
|
the process may exit before the <code>Timeout</code> object's callback is invoked. Calling
|
|
<code>timeout.unref()</code> multiple times will have no effect.</p>
|
|
<p>Calling <code>timeout.unref()</code> creates an internal timer that will wake the Node.js
|
|
event loop. Creating too many of these can adversely impact performance
|
|
of the Node.js application.</p>
|
|
<h3><code>timeout[Symbol.toPrimitive]()</code><span><a class="mark" href="#timers_timeout_symbol_toprimitive" id="timers_timeout_symbol_toprimitive">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v12.19.0</span>
|
|
</div>
|
|
<ul>
|
|
<li>Returns: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type" class="type"><integer></a> a number that can be used to reference this <code>timeout</code></li>
|
|
</ul>
|
|
<p>Coerce a <code>Timeout</code> to a primitive. The primitive can be used to
|
|
clear the <code>Timeout</code>. The primitive can only be used in the
|
|
same thread where the timeout was created. Therefore, to use it
|
|
across <a href="worker_threads.html"><code>worker_threads</code></a> it must first be passed to the correct
|
|
thread. This allows enhanced compatibility with browser
|
|
<code>setTimeout()</code> and <code>setInterval()</code> implementations.</p>
|
|
<h2>Scheduling timers<span><a class="mark" href="#timers_scheduling_timers" id="timers_scheduling_timers">#</a></span></h2>
|
|
<p>A timer in Node.js is an internal construct that calls a given function after
|
|
a certain period of time. When a timer's function is called varies depending on
|
|
which method was used to create the timer and what other work the Node.js
|
|
event loop is doing.</p>
|
|
<h3><code>setImmediate(callback[, ...args])</code><span><a class="mark" href="#timers_setimmediate_callback_args" id="timers_setimmediate_callback_args">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.9.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>callback</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function" class="type"><Function></a> The function to call at the end of this turn of
|
|
the Node.js <a href="https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#setimmediate-vs-settimeout">Event Loop</a></li>
|
|
<li><code>...args</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types" class="type"><any></a> Optional arguments to pass when the <code>callback</code> is called.</li>
|
|
<li>Returns: <a href="timers.html#timers_class_immediate" class="type"><Immediate></a> for use with <a href="timers.html#timers_clearimmediate_immediate"><code>clearImmediate()</code></a></li>
|
|
</ul>
|
|
<p>Schedules the "immediate" execution of the <code>callback</code> after I/O events'
|
|
callbacks.</p>
|
|
<p>When multiple calls to <code>setImmediate()</code> are made, the <code>callback</code> functions are
|
|
queued for execution in the order in which they are created. The entire callback
|
|
queue is processed every event loop iteration. If an immediate timer is queued
|
|
from inside an executing callback, that timer will not be triggered until the
|
|
next event loop iteration.</p>
|
|
<p>If <code>callback</code> is not a function, a <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a> will be thrown.</p>
|
|
<p>This method has a custom variant for promises that is available using
|
|
<a href="util.html#util_util_promisify_original"><code>util.promisify()</code></a>:</p>
|
|
<pre><code class="language-js"><span class="hljs-keyword">const</span> util = <span class="hljs-built_in">require</span>(<span class="hljs-string">'util'</span>);
|
|
<span class="hljs-keyword">const</span> setImmediatePromise = util.promisify(setImmediate);
|
|
|
|
setImmediatePromise(<span class="hljs-string">'foobar'</span>).then(<span class="hljs-function">(<span class="hljs-params">value</span>) =></span> {
|
|
<span class="hljs-comment">// value === 'foobar' (passing values is optional)</span>
|
|
<span class="hljs-comment">// This is executed after all I/O callbacks.</span>
|
|
});
|
|
|
|
<span class="hljs-comment">// Or with async function</span>
|
|
<span class="hljs-keyword">async</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">timerExample</span>(<span class="hljs-params"></span>) </span>{
|
|
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Before I/O callbacks'</span>);
|
|
<span class="hljs-keyword">await</span> setImmediatePromise();
|
|
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'After I/O callbacks'</span>);
|
|
}
|
|
timerExample();</code></pre>
|
|
<h3><code>setInterval(callback, delay[, ...args])</code><span><a class="mark" href="#timers_setinterval_callback_delay_args" id="timers_setinterval_callback_delay_args">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.0.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>callback</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function" class="type"><Function></a> The function to call when the timer elapses.</li>
|
|
<li><code>delay</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type" class="type"><number></a> The number of milliseconds to wait before calling the
|
|
<code>callback</code>.</li>
|
|
<li><code>...args</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types" class="type"><any></a> Optional arguments to pass when the <code>callback</code> is called.</li>
|
|
<li>Returns: <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> for use with <a href="timers.html#timers_clearinterval_timeout"><code>clearInterval()</code></a></li>
|
|
</ul>
|
|
<p>Schedules repeated execution of <code>callback</code> every <code>delay</code> milliseconds.</p>
|
|
<p>When <code>delay</code> is larger than <code>2147483647</code> or less than <code>1</code>, the <code>delay</code> will be
|
|
set to <code>1</code>. Non-integer delays are truncated to an integer.</p>
|
|
<p>If <code>callback</code> is not a function, a <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a> will be thrown.</p>
|
|
<h3><code>setTimeout(callback, delay[, ...args])</code><span><a class="mark" href="#timers_settimeout_callback_delay_args" id="timers_settimeout_callback_delay_args">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.0.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>callback</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function" class="type"><Function></a> The function to call when the timer elapses.</li>
|
|
<li><code>delay</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type" class="type"><number></a> The number of milliseconds to wait before calling the
|
|
<code>callback</code>.</li>
|
|
<li><code>...args</code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types" class="type"><any></a> Optional arguments to pass when the <code>callback</code> is called.</li>
|
|
<li>Returns: <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> for use with <a href="timers.html#timers_cleartimeout_timeout"><code>clearTimeout()</code></a></li>
|
|
</ul>
|
|
<p>Schedules execution of a one-time <code>callback</code> after <code>delay</code> milliseconds.</p>
|
|
<p>The <code>callback</code> will likely not be invoked in precisely <code>delay</code> milliseconds.
|
|
Node.js makes no guarantees about the exact timing of when callbacks will fire,
|
|
nor of their ordering. The callback will be called as close as possible to the
|
|
time specified.</p>
|
|
<p>When <code>delay</code> is larger than <code>2147483647</code> or less than <code>1</code>, the <code>delay</code>
|
|
will be set to <code>1</code>. Non-integer delays are truncated to an integer.</p>
|
|
<p>If <code>callback</code> is not a function, a <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a> will be thrown.</p>
|
|
<p>This method has a custom variant for promises that is available using
|
|
<a href="util.html#util_util_promisify_original"><code>util.promisify()</code></a>:</p>
|
|
<pre><code class="language-js"><span class="hljs-keyword">const</span> util = <span class="hljs-built_in">require</span>(<span class="hljs-string">'util'</span>);
|
|
<span class="hljs-keyword">const</span> setTimeoutPromise = util.promisify(<span class="hljs-built_in">setTimeout</span>);
|
|
|
|
setTimeoutPromise(<span class="hljs-number">40</span>, <span class="hljs-string">'foobar'</span>).then(<span class="hljs-function">(<span class="hljs-params">value</span>) =></span> {
|
|
<span class="hljs-comment">// value === 'foobar' (passing values is optional)</span>
|
|
<span class="hljs-comment">// This is executed after about 40 milliseconds.</span>
|
|
});</code></pre>
|
|
<h2>Cancelling timers<span><a class="mark" href="#timers_cancelling_timers" id="timers_cancelling_timers">#</a></span></h2>
|
|
<p>The <a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a>, <a href="timers.html#timers_setinterval_callback_delay_args"><code>setInterval()</code></a>, and <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a> methods
|
|
each return objects that represent the scheduled timers. These can be used to
|
|
cancel the timer and prevent it from triggering.</p>
|
|
<p>It is not possible to cancel timers that were created using the promisified
|
|
variants of <a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a>, <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a>.</p>
|
|
<h3><code>clearImmediate(immediate)</code><span><a class="mark" href="#timers_clearimmediate_immediate" id="timers_clearimmediate_immediate">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.9.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>immediate</code> <a href="timers.html#timers_class_immediate" class="type"><Immediate></a> An <code>Immediate</code> object as returned by
|
|
<a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a>.</li>
|
|
</ul>
|
|
<p>Cancels an <code>Immediate</code> object created by <a href="timers.html#timers_setimmediate_callback_args"><code>setImmediate()</code></a>.</p>
|
|
<h3><code>clearInterval(timeout)</code><span><a class="mark" href="#timers_clearinterval_timeout" id="timers_clearinterval_timeout">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.0.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>timeout</code> <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> A <code>Timeout</code> object as returned by <a href="timers.html#timers_setinterval_callback_delay_args"><code>setInterval()</code></a>.</li>
|
|
</ul>
|
|
<p>Cancels a <code>Timeout</code> object created by <a href="timers.html#timers_setinterval_callback_delay_args"><code>setInterval()</code></a>.</p>
|
|
<h3><code>clearTimeout(timeout)</code><span><a class="mark" href="#timers_cleartimeout_timeout" id="timers_cleartimeout_timeout">#</a></span></h3>
|
|
<div class="api_metadata">
|
|
<span>Added in: v0.0.1</span>
|
|
</div>
|
|
<ul>
|
|
<li><code>timeout</code> <a href="timers.html#timers_class_timeout" class="type"><Timeout></a> A <code>Timeout</code> object as returned by <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a>.</li>
|
|
</ul>
|
|
<p>Cancels a <code>Timeout</code> object created by <a href="timers.html#timers_settimeout_callback_delay_args"><code>setTimeout()</code></a>.</p>
|
|
<!-- API END -->
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|