Node.js承诺中的readline
我正在尝试使用node.js包读取线在命令行上获取用户输入,并且我想通过promises管道输入的输入。但是,输入永远不会通过当时的链。我认为这个问题可能来自于回调方法中的promise已经完成,但我不知道如何解决这个问题。
此问题的一个示例如下所示:
import rlp = require('readline');
const rl = rlp.createInterface({
input: process.stdin,
output: process.stdout
});
let prom = new Promise((fulfill, reject) => {
rl.question('Enter input: ', input => rl.close() && fulfill(input));
});
prom.then(result => {console.log(result); return prom})
.then(result => {console.log(result); return prom})
.then(result => console.log(result));
回答如下:
一旦你的承诺得到解决,就再也没有等待的了。我还将rl.close()
调用移到了最后,因为它只需要调用一次。
const rlp = require('readline');
const rl = rlp.createInterface({
input: process.stdin,
output: process.stdout
});
function ask() {
return new Promise((resolve, reject) => {
rl.question('Enter input: ', (input) => resolve(input) );
});
}
ask()
.then((result) => { console.log(result); return ask(); })
.then((result) => { console.log(result); return ask(); })
.then(result => { console.log(result); rl.close() });
与本文相关的文章
评论列表(0)
- 暂无评论