gpt4 book ai didi

node.js - 从 NodeJS Express 'post' 可观察到的 ReactiveX

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:04 24 4
gpt4 key购买 nike

是否可以通过以下方式创建 ReactiveX Observable:

app = express();
app.post('/path', function() {...})

?

我的意思是,存在一种创建可观察的 fromEvent 的方法,我已经在其中使用了很多使用 object.on('eventName', function(){ }) 但 express 的帖子并不完全是这样。

最佳答案

一路Rx-ify express ?

尝试将 express 中路由的回调式实现转换为 Rx 的增加的复杂性让我得出结论,这不是前进的方向。这是因为 express 不知道 Rx,因此没有订阅生命周期和多事件发射的概念。

martin的回答是一个proof-of-concept,上面的问题大家可以看的很清楚。这意味着对于每条路线,您都需要创建一个单独的 Subjectshare() 一个主题,然后为每条路线制作大量过滤器以单独实现。这是冗余,因为 express 已经将您的请求路由到正确的处理程序。

将 Rx 世界与快速回调相结合

如果你想获得 Expressjs 路由与 RxJs 结合的好处,我会分离路由逻辑并将其保留在快速回调中,实际实现使用它作为 Rx 结合 .toPromise()激活它:

app.post('/user/:id', (req, res) => {
return getUserById(req.params.id)
.toPromise()/* return the Rx stream as promise to express so it traces its lifecycle */
.then(
user => res.send(user),
err => res.status(500).send(err.message)
);
});

function getUserById(id) {
// stub implementation
return Rx.Observable.of({ id, name: 'username' })
.delay(100);
}

关于node.js - 从 NodeJS Express 'post' 可观察到的 ReactiveX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41993496/

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