timers/promises
for client and server.
The
timers/promisesAPI provides an alternative set of timer functions that returnPromiseobjects.
npm install isomorphic-timers-promises --saveimport {
setTimeout,
setImmediate,
setInterval
} from 'isomorphic-timers-promises';
(async () => {
const result = await setTimeout(100, 'becky');
console.log(result); // 'becky'
})();
(async () => {
const result = await setImmediate('maya');
console.log(result); // 'maya'
})();
(async () => {
let result = 0;
for await (const startTime of setInterval(100, Date.now())) {
const now = Date.now();
result = result + 1;
if (now - startTime >= 1000) {
break;
}
}
console.log(result); // 10
})();Show me
// webpack.config.js
module.exports = {
// ...
resolve: {
alias: {
'timers/promises': 'isomorphic-timers-promises'
}
}
};Show me
// rollup.config.js
const { default: resolve } = require('@rollup/plugin-node-resolve');
const alias = require('@rollup/plugin-alias');
module.exports = {
// ...
plugins: [
resolve(),
alias({
entries: {
'timers/promises': 'isomorphic-timers-promises'
}
})
]
};Show me
Depending on your configuration you can alias timers/promises with packages
like link-module-alias or
babel-plugin-module-resolver.
Returns: Promise
| Property | Type | Default | Description |
|---|---|---|---|
delay |
number |
1 |
The number of milliseconds to wait before fulfilling the promise. |
value |
* |
A value with which the promise is fulfilled. | |
options.ref |
boolean |
true |
Set to false to indicate that the scheduled timeout should not require the event loop to remain active. Valid only for server environment. |
options.signal |
AbortSignal |
An optional AbortSignal that can be used to cancel the scheduled timeout. |
Returns: Promise
| Property | Type | Default | Description |
|---|---|---|---|
value |
* |
A value with which the promise is fulfilled. | |
options.ref |
boolean |
true |
Set to false to indicate that the scheduled immediate should not require the event loop to remain active. Valid only for server environment. |
options.signal |
AbortSignal |
An optional AbortSignal that can be used to cancel the scheduled immediate. |
Returns: async iterator that generates values in an interval of delay.
| Property | Type | Default | Description |
|---|---|---|---|
delay |
number |
1 |
The number of milliseconds to wait between iterations. |
value |
* |
A value with which the iterator returns. | |
options.ref |
boolean |
true |
Set to false to indicate that the scheduled timeout between iterations should not require the event loop to remain active. Valid only for server environment. |
options.signal |
AbortSignal |
An optional AbortSignal that can be used to cancel the scheduled timeout between operations. |
Supports Node 10+.
Tested in Chrome 72, Firefox 65, Internet Explorer 11 and should work in all modern browsers.
Check support based on Browserslist configuration.
Assumes Promise, AbortController and setImmediate are polyfilled or
available in global context.
For automated tests, run npm run test:automated (append :watch for watcher
support).
Test suite is taken and modified from official Node.js repository
(setTimeout,
setImmediate,
setInterval).
MIT © Ivan Nikolić