[英]How to subscribe to an observable once?
我的 function access()
每次調用都需要訂閱一次。
在下面的代碼片段中, $valueChanges
為所做的每個更改發出數據。 在沒有const $ =...
和$.unsubscribe()
) 的情況下調用access()
) , $valueChanges
observable 會發出不必要的值流。
是否有一個 rxjs 運算符/函數在 function 內的訂閱中發出一次? 即使 function 被多次調用,訂閱也會發出一次?
access() {
const $ = $valueChanges.pipe(
map((res) =>
...
),
).subscribe((res) => {
...
$.unsubscribe();
});
}
您可以考慮使用take()
運算符,並在完成之前僅發出第一個值。
根據文檔, take
操作員
Emit provided number of values before completing.
這是您可以使用它的方式:
access() {
valueChanges
.pipe(
map((res) =>
...
),
take(1),
).subscribe((res) => {
...
});
}
試試shareReply(1)
。 然后原始的 stream 將只被調用一次,它的發射將與所有訂閱者共享。 如果 stream 第二次發出 - 更新也將 go 發送給所有訂閱者。
access() {
const $ = $valueChanges.pipe(
map((res) =>
...
),
// take(1), // in case if you need just 1 emit from it.
shareReply(1), // in case if you don't want to trigger `$valueChanges` on every subscription.
).subscribe((res) => {
...
// $.unsubscribe(); // it's useless in case of `take(1)`.
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.