Khi sử dụng đường ống async trên quan sát đang sử dụng toán tử .share() (do tính toán đắt tiền trong chương trình phụ trợ), tôi tình cờ gặp hành vi này:Góc 2 + rxjs: đường ống không đồng bộ với toán tử .share()
data$ = (new Observable(observer => {
let counter=0;
observer.next(counter)
window.setInterval(() => {
observer.next(counter);
counter++;
}, 2000);
}))
.share();
mẫu:
{{ (data$|async) !== null }}
{{ (data$|async) !== null }}
đầu ra của giá trị ban đầu là:
true false
các kết quả sau (sau hơn 2 giây) là:
true true
cũng là hành vi mà tôi mong đợi cho giá trị đầu tiên. Nếu tôi bỏ qua .share(), đầu ra cho giá trị đầu tiên là "true true", như tôi mong đợi. Tôi cho rằng hành vi trên là do biểu thức đầu tiên trong mẫu kích hoạt thực thi quan sát được và khi ống async thứ hai đăng ký với dữ liệu quan sát được, dữ liệu đã biến mất. Lời giải thích này có đúng không? Và làm thế nào tôi có thể tránh được hành vi này?
Vì có được coi là một giá trị duy nhất, đó là 'observer.next (...); observer.complete() '. – estus
ví dụ với một giá trị duy nhất chỉ dành cho trình diễn, trong ứng dụng của tôi có thể quan sát được có nhiều giá trị – highwaychile
Vui lòng cung cấp mã phản ánh trường hợp của bạn sau đó. – estus