A promise wrapper for process nextTick
npm install tick-promise
const nextTick = require('tick-promise');
(async () => {
// Some code that uses process.nextTick
await nextTick();
// Do things after process.nextTick
})()
`
Install
npm install tick-promise
Demo / Use case
For an example we'll use 2 nice node modules, [prompts][2] for retrieving user input and [simple-node-logger][1] to create our logs:
`
const prompts = require('prompts');
const log = require('simple-node-logger').createSimpleLogger();
(async () => {
log.info('Asking user age');
const response = await prompts({
type: 'number',
name: 'value',
message: 'How old are you?',
validate: value => value < 18 ? Nightclub is 18+ only : true
});
console.log(response); // => { value: 24 }
})();
`
If we execute this, we'll get something like this:
!Demo problem
We can see that the logger text output is next to the prompt output, not good. That happens because [simple-node-logger][1] uses process.nextTick to do the output. In order to avoid this, we need to create a promise wrapper for process.nextTick and use it after the logger and before the prompt:
`
const prompts = require('prompts');
const log = require('simple-node-logger').createSimpleLogger();
const nextTick = require('tick-promise');
(async () => {
log.info('Asking user age');
await nextTick();
const response = await prompts({
type: 'number',
name: 'value',
message: 'How old are you?',
validate: value => value < 18 ? Nightclub is 18+ only : true
});
console.log(response); // => { value: 24 }
})();
``