Giả sử tôi muốn tạo ra một luồng không đồng bộ các số ngẫu nhiên sẽ bơm ra một giá trị mới sau mỗi 100 mili giây. Trong khi cố gắng tìm ra giải pháp, nỗ lực đầu tiên của tôi trông giống như sau:Observable.Defer - cần làm rõ một số để biết chính xác nó làm gì
var random = new Random();
Observable.Start(() => random.Next())
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
Nếu bạn thử và chạy nó, bạn sẽ nhận thấy rằng nó chỉ lặp lại giá trị đó lặp đi lặp lại. OK, tôi đoán tôi hiểu lầm cách lặp lại hoạt động. Sau khi chơi đùa một chút, tôi đến với điều này và nó làm việc:
var random = new Random();
Observable.Defer(()=> Observable.Start(() => random.Next()))
.Delay(TimeSpan.FromMilliseconds(100))
.Repeat()
.Subscribe(Console.WriteLine);
Vì vậy, tôi đã đi đến tài liệu MSDN để hiểu những gì Hoãn được thực sự làm, và đây là những gì nó nói:
Trả về một chuỗi có thể quan sát để gọi nhà máy quan sát bất cứ khi nào một người quan sát mới đăng ký.
Tôi đoán nhầm lẫn của tôi là thế này: trong mẫu mã của tôi, tôi chỉ từng đăng ký vào các Quan sát một lần, vậy tại sao là nó dường như cách gọi các Observable.Start(...)
hơn và hơn? Hay tôi hiểu nhầm Repeat()
? Bất kỳ làm rõ sẽ là tuyệt vời.