Skip to main content

question

method Interface.prototype.question
Jump to headingInterface.prototype.question(
query: string,
callback: (answer: string) => void,
): void

The rl.question() method displays the query by writing it to the output, waits for user input to be provided on input, then invokes the callback function passing the provided input as the first argument.

When called, rl.question() will resume the input stream if it has been paused.

If the Interface was created with output set to null or undefined the query is not written.

The callback function passed to rl.question() does not follow the typical pattern of accepting an Error object or null as the first argument. The callback is called with the provided answer as the only argument.

An error will be thrown if calling rl.question() after rl.close().

Example usage:

rl.question('What is your favorite food? ', (answer) => {
  console.log(`Oh, so your favorite food is ${answer}`);
});

Using an AbortController to cancel a question.

const ac = new AbortController();
const signal = ac.signal;

rl.question('What is your favorite food? ', { signal }, (answer) => {
  console.log(`Oh, so your favorite food is ${answer}`);
});

signal.addEventListener('abort', () => {
  console.log('The food question timed out');
}, { once: true });

setTimeout(() => ac.abort(), 10000);

Parameters Jump to heading

Jump to headingquery: string

A statement or query to write to output, prepended to the prompt.

Jump to headingcallback: (answer: string) => void

A callback function that is invoked with the user's input in response to the query.

Return Type Jump to heading

void
Jump to headingInterface.prototype.question(
query: string,
options: Abortable,
callback: (answer: string) => void,
): void

Parameters Jump to heading

Jump to headingquery: string
Jump to headingcallback: (answer: string) => void

Return Type Jump to heading

void
Back to top