Я хотел бы использовать наблюдаемое, чтобы сигнализировать различным частям моего Angular приложения об «исключительных состояниях» и аналогично, но я понимаю, что не очень понимаю, как они работают.
В следующем В коде я построил объект-наблюдатель и создал из него наблюдаемый объект. Я хотел бы выяснить, как вызвать метод «next» вне области действия метода Observable.create, чтобы я мог вставить произвольные события в поток. Вызов next прямо на наблюдателя deos, похоже, не является ответом.
var observer = {
next: function(value) {
this.myvalue="last value: " + value;
},
error: function(error) {
console.log(error);
},
complete: function() {
console.log('completed');
},
myfunction: function() {
this.myvalue = "Penguins"
},
myvalue: ""
}
let myobs$ : Observable<any> = Observable.create(function(obs) {
obs.next("Some foo");
obs.next("Other foo");
})
let foo=myobs$.subscribe((observer)=> {
console.log("This is the subscription: ", observer)
})
setTimeout(function() {
observer.next("This is a late breaking value");
console.log(observer.myvalue);
}, 2000);
}
этот код производит следующий вывод на консоль:
This is the subscription: Some foo
This is the subscription: Other foo
last value: This is a late breaking value
Так что похоже на вызов next
on объект-наблюдатель напрямую (который я пробовал внутри функции тайм-аута внизу) не создает значения внутри подписки.
Также ясно, что я не понимаю, как эти вещи должны работать. Было бы полезно понять, что, если я настроил наблюдаемое и я хочу «вручную» вставить данные в поток, который будет собираться подписчиками, как именно я это сделаю? Я могу видеть, как вы делаете это с помощью таких распространяющих события событий, как щелчки мышью или ajax запросов, но я хочу создать поток, который я могу подавать на ad-ho c основе, когда некоторые интересные вещи случаются в разных местах в моем коде.