【发布时间】:2019-05-14 08:39:04
【问题描述】:
我创建了一个observable,我是subscribing,每次在button click 活动中。
import {Component} from '@angular/core';
import {MainService} from '..\services\main-service';
@component({
selector:'app-main',
style:'',
template:'<div> <button click="processing()">Processing</button></div>'
})
exports class AppMain{
constructor(private mainService: MainService){
}
processing(){
this.mainService.process$.subscribe((res)=>{
// doing something here ..
});
}
}
主服务
import {OnInit} from '@angular\core';
import {Observable} from 'rxjs\Observable';
export class MainService implements OnInit{
public process$;
constructor(){
this.process$ = new Observable((observer)=>{
// doing something here
observer.next();
});
}
}
现在,每当我多次单击此按钮时,有时此可观察到的功能有时不会运行。
我是否必须在每个 subsciption 之后取消订阅这个 observable 还是必须做其他事情
【问题讨论】:
-
你也可以展示
MainService类的实现吗?除非您使用BehaviorSubject,否则您的订阅回调将仅在发出事件时运行 -
@AmitChigadani 能否请您详细说明此声明
And your subscription call back will run only when event is emitted,因为这里会发出on click of button事件,所以为什么不按下按钮时在这里调用 -
@AmitChigadani MainService 仅具有
process$Observable 定义 -
点击按钮时,您订阅了
process$事件,而不是发出事件。所以多次点击只会创建新的Subscriptions。 -
@AmitChigadani,如果您在每个订阅中看到正在运行
observer.next(),那么我认为它应该调用回调。我在写吗?
标签: javascript angular observable