0
我想圍繞着觀察者包裹我的頭。我知道當觀察者中的值發生變化時,observable會通知其所有用戶有所變化。我不確定爲什麼下面的代碼不起作用。我的理解是,一旦我在數組中添加另一個元素,訂閱者應該記錄新值或記錄所有值。瞭解Observable:不更新陣列用戶
有人能解釋爲什麼嗎?
import { Observable } from 'rxjs';
var numbers = [5, 1, 2, 7, 10];
// let source = Observable.from(numbers);
let source = Observable.create(observer => {
for (let n of numbers)
observer.next(n);
observer.complete();
});
source.subscribe(
value => console.log(`value is ${value}`),
error => console.log(`error is ${error}`),
() => console.log(`completed!`)
);
setTimeout(function() {
console.log("pushing new value");
numbers.push(33);
}, 3000);
我試着評論observer.complete(),因爲我認爲這可能是罪魁禍首。
所以你的意思是說我們不能複製數組作爲流?我們將不得不使用Subject而不是Observable? –
您可以從數組中複製值的流,但是數組無法將值推送到現有的observable。 Observable通過調用下一個函數來釋放新值。您可以將您的數組「發送」到主題下一個功能,並且其所有訂閱者/操作員將這些值按下流 – LookForAngular