【发布时间】:2017-05-02 08:06:30
【问题描述】:
我正在尝试向服务器查询字符串令牌,然后客户端组件将使用该字符串令牌。客户端上的流星方法调用需要一个异步结果,并返回一个 Observable。一旦方法完成,它会调用 Observable 上的 next。组件订阅 Observable。
但是,当代码运行时,就会出现问题。在调试器中,Observable 没有任何订阅者。因此调用 next() 时不会调用订阅者回调。
我不清楚出了什么问题,希望能有另一双经验丰富的眼睛。
import { Component, OnInit, OnDestroy, Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { Subscription } from 'rxjs/Subscription';
import { Observable } from 'rxjs/Observable';
@Component({
selector: "test",
template: ``
})
export class TestComponent implements OnInit, OnDestroy {
myToken: Observable<string>;
private tokenSubscription: Subscription;
constructor(private theService: SomeService) {}
ngOnInit() {
this.myToken = this.theService.createToken();
this.tokenSubscription = this.myToken.subscribe((token: string) => {
this.doSomething(token);
});
}
ngOnDestroy() {
this.tokenSubscription.unsubscribe();
}
doSomething(token: string) {
// ...
}
}
@Injectable()
export class SomeService {
createToken(): Observable<string> {
let subject: Subject<string> = Subject.create();
Meteor.call("serverOnly.createToken", (err, result: {"data": string}) => {
if (err) {
throw new Meteor.Error("createToken", err);
} else {
subject.next(result.data);
}
});
return subject.asObservable();
}
}
【问题讨论】:
标签: angular rxjs angular-meteor