我能够以下面提到的方式在我的角度组件中创建一个Observable
...
...
import { Observable } from 'rxjs/Observable';
..
...
let observable = new Observable( function subscribe(observer) {
observer.next(1);
observer.next(2);
observer.next(3);
observer.next(4);
setTimeout(() => {observer.next(5); },9000);
});
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何创建一个主题,有人可以提供相同的例子吗?
eko*_*eko 12
这是一个吸烟者:http://plnkr.co/edit/jLtFLjWrvHGI0ZPHl10B?p = preview
import {Subject} from 'rxjs/Subject';
@Injectable()
export class MyService {
public invokeEvent:Subject<any> = new Subject();
constructor() {}
}
Run Code Online (Sandbox Code Playgroud)
订阅它就像一个可观察的:
constructor(private _myService: MyService) {
this._myService.invokeEvent.subscribe((value) => {
console.log(value);
});
}
Run Code Online (Sandbox Code Playgroud)
并将值推送到它,就像下一个再次观察一样
ngAfterViewInit(){
this._myService.invokeEvent.next(1);
}
Run Code Online (Sandbox Code Playgroud)
使用AngularRx.Subject和不使用Angular没有什么区别,主要原理是一样的,看下面的例子
const subject = new Rx.Subject();
const subscription = subject.subscribe(
(data) => console.log(data),
(err) => console.log(err),
() => console.log('Completed')
);
subject.next(1);
subject.next(2);
subject.next(3);
subject.complete();
Run Code Online (Sandbox Code Playgroud)
<script src="https://unpkg.com/@reactivex/rxjs@5.0.0-beta.7/dist/global/Rx.umd.js"></script>
Run Code Online (Sandbox Code Playgroud)
您需要创建新实例Rx.Subject,然后在需要的地方订阅它,并触发事件。
| 归档时间: |
|
| 查看次数: |
20499 次 |
| 最近记录: |