我们正在创建一个Messenger模块,该模块需要基于RxJs,并且需要根据用户对另一个组件的反应发出一个值。
我已经尝试过of(),并传递了现有的BehaviorSubject,但是没有一个能像预期的那样工作。功能应该像一个简单的承诺,用户可以解决。
一些原始代码可以说明这个想法:
MessageService {
message = new BehaviorSubject(undefined);
addMessage(message) {
this.message.next(message);
return new Subject();
}
userClick(boolean) {
// clicked on Ok or Cancel
// We want to send that value to the subscription on addMessage
}
}
AnotherService {
....
this.messageService.addMessage('Are you sure?')
.subscribe(boolean => console.log(boolean));
....
}
因此,当用户在MessageService中处理的内容中单击“确定”或“取消”按钮时,AnotherService的订阅应会收到答案。
答案 0 :(得分:1)
要执行此操作,您需要在某个地方创建一个Observable以及要通过true/false
的方法。
这可以通过
完成requestUser(): Observable<boolean> {
// do some actions
return new Observable(observer => {
// react here on what user does
observer.next(true);
})
}
导致订户在subscribe
上获得真/假的原因。