第一个和第二个观察者订阅处理程序
First and second Observer subscribe handler
我有这样的代码:
const i = 0;
const subject = webSocket(WEBSOCKET_API_URL);
subject.subscribe(
msg => {
if(i===0) {
firstHandler();
}
if(i===1) {
secondHandler();
}
else {
globalHanlder();
}
if(i <= 2) {
i++;
}
}
);
subject.next({
event: "testSubscribe",
});
我想订阅一个 WebSocket 频道,发送一条消息,并以不同于其他响应的方式处理 2 个第一响应。
我按照你上面看到的那样做了。
我不喜欢这个解决方案。
我想知道是否有一些更漂亮的方法来处理第一次和第二次使用 rxjs 的函数调用。
你有什么想法吗?
我认为你的解决方案很好。不需要 Observable 运算符的清洁器,但下面会做同样的事情
const 1st=subject.pipe(take(2),last(),tap(()=>firstHandler()))
const 2nd=subject.pipe(first(),tap(()=>secondHandler()))
const other=subject.pipe(skip(2),tap(()=>globalHandler()))
merge(1st,2nd,other).subscribe()
就我个人而言,我会以几乎与您相同的方式进行操作。也许我宁愿让 i
变量定义在链中。也许如果您不需要 subject
发出的值,您可以用索引替换它们。
subject.pipe(
map((value, index) => index),
).subscribe(index => {
if (index === 0) {
firstHandler();
} else if (index === 1) {
secondHandler();
} else {
globalHanlder();
}
});
我有这样的代码:
const i = 0;
const subject = webSocket(WEBSOCKET_API_URL);
subject.subscribe(
msg => {
if(i===0) {
firstHandler();
}
if(i===1) {
secondHandler();
}
else {
globalHanlder();
}
if(i <= 2) {
i++;
}
}
);
subject.next({
event: "testSubscribe",
});
我想订阅一个 WebSocket 频道,发送一条消息,并以不同于其他响应的方式处理 2 个第一响应。
我按照你上面看到的那样做了。 我不喜欢这个解决方案。 我想知道是否有一些更漂亮的方法来处理第一次和第二次使用 rxjs 的函数调用。
你有什么想法吗?
我认为你的解决方案很好。不需要 Observable 运算符的清洁器,但下面会做同样的事情
const 1st=subject.pipe(take(2),last(),tap(()=>firstHandler()))
const 2nd=subject.pipe(first(),tap(()=>secondHandler()))
const other=subject.pipe(skip(2),tap(()=>globalHandler()))
merge(1st,2nd,other).subscribe()
就我个人而言,我会以几乎与您相同的方式进行操作。也许我宁愿让 i
变量定义在链中。也许如果您不需要 subject
发出的值,您可以用索引替换它们。
subject.pipe(
map((value, index) => index),
).subscribe(index => {
if (index === 0) {
firstHandler();
} else if (index === 1) {
secondHandler();
} else {
globalHanlder();
}
});