Я думаю, что я пытаюсь сделать что-то простое, но мне не повезло в его решении. Я хочу создать наблюдаемый, который уведомляет своих подписчиков при вызове метода другого объекта. Я думаю, что RxJS Observable - правильный подход, но я не знаю, как создать мой Observable. У меня нет доступа к изменению функции handle.ready, как в библиотеке DataLib.Как создать наблюдаемый rxjs из метода
//Lets say I need to Observe the handle object for when it calls ready().
let handle = DataLib.getDataAsyncronously();
//sometime in the future DataLib will call handle.ready() which means that
//the data is ready.
let myObservable = Rx.Observable.XXXXXX(handle.ready() is called);
myObservable.subscribe(()=>{
//handle.ready() method just got called.
//Do something now that handle.ready() has been called by DataLib.
});
Как создать myObservable таким образом, что абоненты получают уведомление, когда handle.ready() вызывается?
Я не совсем понимаю, что вы пытаетесь сделать. Бункер поможет. Похоже, что у вас неправильный порядок. В вашем коде наблюдаемый создается и подписывается независимо от того, что делает 'handle'. Мне сложно сделать рекомендацию, не зная больше о handle/getMyHandle. Скорее всего, вы захотите использовать метод 'create'. В качестве альтернативы, Rx.Subject может работать. Stick 'const subject = new Rx.Subject();' затем внутри getMyHandle.ready() 'subject.onNext ('event')' –
Вы правы в том, что если бы у меня был доступ к модификации метода ready(), я мог бы сделайте, как вы предлагаете. Однако объект handle исходит из другой библиотеки, поэтому я не могу модифицировать готовый метод. Единственное, что я знаю, это то, что когда-нибудь в будущем вызывается handle.ready(). Когда вызывается handle.ready(), я хочу, чтобы мои подписчики знали это, чтобы затем они могли получить данные, которые они ожидали. Благодарю. –
Сколько раз вызывается 'handle.ready'? Вы могли бы использовать для этого простое обещание. –