Ionic 2:调用事件同时订阅和取消订阅
Ionic 2: Calling Events subscribe and unsubscribe simultaneously
我正在尝试从离子角度使用Publish
和Subscribe
。
subscribe.js
this.events.subscribe('done:eventA', (userEventData) => {
//Perform some operations
this.startEventB();
this.events.unsubscribe('done:eventA'); <---
}
this.events.subscribe('done:eventB', (userEventData) => {
//Perform some operations
this.startEventA();
}
this.events.subscribe('done:eventA', (userEventData) => {
//Perform some operations
this.startEventC();
}
startEventB(){
this.events.publish('done:eventB', data);
}
startEventA(){
this.events.publish('done:eventA', data);
}
第一个时间事件A是发布我想执行startEventB()
秒时间事件A是发布的,我想执行startEventC()
,所以我尝试从第一部分unsubscribe
。但是当我点击unsubscribe
时,我所有的订阅都消失了。
我能知道订阅和取消订阅事件的好方法吗?
如果不向取消订阅传递第二个参数,则所有订阅者都将被删除。如果要退订给定的订阅者,则必须订阅和退订同一个对象,如下所述。
我喜欢的另一个解决方案是在具有RxJS主题类型之一的组件之间共享服务。源类可以使用对该主题执行下一步操作的服务函数进行发布,目标类可以将获取该主题的流作为可观察对象进行观察。
这里有一个此类服务的示例:
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import {Subject} from 'rxjs/Subject';
import {Booking} from '../../common/model/booking';
@Injectable()
export class BookingEventsService
{
private _newChannel: Subject<Booking> = new Subject<Booking>();
constructor()
{
}
publishNew( booking: Booking )
{
this._newChannel.next( booking );
}
newChannel(): Observable<Booking>
{
return this._newChannel.asObservable();
}
}
希望有帮助。问候,哈维
相关文章:
- IE11中的第二个调用取消了第一个Fetch API调用
- 如何在调用去抖函数之后和执行之前取消该函数
- 如何取消原型ajax调用
- 用变元取消对函数的调用
- 根据React中的调度循环取消反弹调用
- Ajax jQuery同时进行多个调用-等待应答的时间很长,无法取消
- 在再次被调用之前取消调用函数
- 在简单模式中,取消单击时不会调用onClose事件..当我在simple-modal上加载另一个jquery对话框时
- 应该调用哪个触摸事件 e.preventDefault() 来取消触摸设备上的“单击”
- 如何取消调用链下游的其他 onclick 函数调用
- 在 jQuery 中取消 $('form').submit() 调用
- 尝试取消反弹搜索函数调用会导致不会将任何事件传递给函数
- 取消之前对谷歌地图地理编码方法的调用
- 调用页面停止后取消阻止 UI
- jQuery: $.when 延迟的 AJAX 调用 — 一个失败的调用会取消其他调用
- 无法通过单击取消按钮停止 ajax 调用
- 如何在 JavaScript 函数调用和页面刷新时取消绑定 OnbeforeUnload 事件
- 为什么replaceWith取消对其变量的调用
- 订阅和取消订阅包含对其他函数的调用的函数
- 取消IE9触摸滚动事件并调用鼠标移动(可能)