【发布时间】:2018-09-03 17:31:31
【问题描述】:
请帮忙解决问题
我有一个方法在服务中
public list(): Observable<ILanguage[]> {
return Observable.create((observer: Observer<ILanguage[]>) => {
if (this._languages && this._languages.length > 0) {
observer.next(this._languages);
observer.complete();
} else {
this._http.get<ILanguage[]>(this._constants.apiUrl + '/langs').subscribe((allLanguages: ILanguage[]) => {
this._languages = allLanguages;
observer.next(this._languages);
observer.complete();
});
}
});
}
如果方法调用发生延迟 - 一切正常,则请求发送一次
但是如果方法被调用,几乎同时 - 有几个请求
试图把启动标志,也没有工作
public list(): Observable<ILanguage[]> {
return Observable.create((observer: Observer<ILanguage[]>) => {
if (this._languages && this._languages.length > 0) {
observer.next(this._languages);
observer.complete();
} else if (!this._requestIsSend) {
this._requestIsSend = true;
this._http.get<ILanguage[]>(this._constants.apiUrl + '/langs').subscribe((allLanguages: ILanguage[]) => {
this._languages = allLanguages;
observer.next(this._languages);
observer.complete();
});
}
});
}
【问题讨论】:
-
你可以直接使用
take方法指定1作为参数,它只会执行一次 -
你的问题不清楚,服务什么时候出错?
-
你能举个例子吗?
-
在多个位置同时发生服务方法调用时无法正常工作
标签: rxjs observable angular6