gpt4 book ai didi

javascript - RxJS Observable fromPromise 和 CLI 应用程序中的交互式循环

转载 作者:行者123 更新时间:2023-11-29 23:40:01 25 4
gpt4 key购买 nike

我正在使用 node.js 构建一个简单的命令行工具。

过去,我使用 Promise 方法处理类似这样的事情

function listenCommand(){
inquirer.prompt([{
type:'input',
name:'value',
message:"Enter commande :"
}]).then(function (command) {
processCmd(command);
});
}

function processCmd(){
...
listenCommand()
}

这将创建我的主循环来输入命令。执行命令时,应用程序将请求下一个命令。

我现在正尝试将其转换为 RxJS 方法,类似的东西。

function listenCommand(){
let listener = Rx.Observable.fromPromise(inquirer.prompt([{
type:'input',
name:'value',
message:"Enter commande :"
}]));

listener.subscribe(function (command) {
processCmd(command);
});
}

function processCmd(){
...
listenCommand()
}

它有效,但听起来不太好。

使用 RxJS 执行此提示循环正确方法是什么?或者 RxJS 不适合那种工作,我应该坚持使用 Promise 方法吗?

最佳答案

您建议的第二种方法本质上是第一种方法,您刚刚将 promise 包装在一个 Observable 接口(interface)中。您可能想使用 repeat/repeatWhen 运算符:

function listenCommand() {
return Rx.Observable.defer(() =>
inquirer.prompt([{
type:'input',
name:'value',
message:"Enter commande :"
}])
)
// Repeats until the end of time
.repeat()
.subscribe(cmd => processCommand(cmd))
}

在调用方,您可以随时通过以下方式取消操作:

const subscription = listenCommand();

subscription.unsubscribe();

关于javascript - RxJS Observable fromPromise 和 CLI 应用程序中的交互式循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com