rl.question(query[, options], callback)
-
query
<string> 要写入output
的语句或查询,位于提示之前。¥
query
<string> A statement or query to write tooutput
, prepended to the prompt. -
options
<Object>-
signal
<AbortSignal> 可选择允许使用AbortController
取消question()
。¥
signal
<AbortSignal> Optionally allows thequestion()
to be canceled using anAbortController
.
-
-
callback
<Function> 使用用户输入调用的回调函数以响应query
。¥
callback
<Function> A callback function that is invoked with the user's input in response to thequery
.
rl.question()
方法通过将 query
写入 output
来显示 query
,等待在 input
上提供用户输入,然后调用 callback
函数,将提供的输入作为第一个参数传入。
¥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.
当调用时,如果 rl.question()
流已暂停,则 rl.question()
将恢复 input
流。
¥When called, rl.question()
will resume the input
stream if it has been
paused.
如果 readline.Interface
是在 output
设置为 null
或 undefined
的情况下创建的,则不会写入 query
。
¥If the readline.Interface
was created with output
set to null
or
undefined
the query
is not written.
传给 rl.question()
的 callback
函数不遵循接受 Error
对象或 null
作为第一个参数的典型模式。以提供的答案作为唯一参数调用 callback
。
¥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.
在 rl.close()
之后调用 rl.question()
会报错。
¥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}`);
});
使用 AbortController
取消问题。
¥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);