【发布时间】:2017-08-23 21:38:35
【问题描述】:
首先,十多年来没有编码(前 Java 开发人员),所以只是将熟悉 Angular 4 作为一种爱好,但我缺乏基本的了解。我搜索了使用 observables 处理数据检索延迟,但没有返回任何相关结果。希望这里有人可以帮助和解释。它围绕以下 TypeScript 代码展开(也请参见内联 cmets):
远程数据服务
export class RemoteDataService {
private headers = new Headers({ 'Content-Type': 'application/json' });
constructor(private http: Http) { }
public getData(url) {
return this.http.get(url)
.map(
(response: Response) => {
const data = response.json();
return data;
}
)
}
}
文章服务
export class ArticleService implements OnInit {
_articles: Article[];
constructor(private _remoteDataService: RemoteDataService) {
this.onGet();
console.log(JSON.stringify(this._articles)) **//<- this._articles is null**
setTimeout(()=> console.log(JSON.stringify(this._articles + "////")), 3000)
} **//<- but if I wait 3 seconds this._articles is set to data elements**
public onGet() {
this._remoteDataService.getData('./assets/articles.json')
.subscribe(
(articles: any[]) => {
this._articles = articles,
console.log(this._articles) **//<- this_.articles is set**
},
(error) => console.log(error))
//console.log(this._articles) **//<- if I uncomment this_.articles is null, huh?**
}
}
输出:
article.service.ts:34 "未定义////"
article.service.ts:46 (20) [{...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {...}, {…}, ?>{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
article.service.ts:35 "[对象对象],[对象对象],[对象对象],[对象>对象],[对象对象],[对象对象],[对象对象],[对象对象] ],[对象>对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象>对象],[对象对象],[对象对象],[对象对象],[对象对象],[对象>对象],[对象对象]////"
我的问题是:
1) 为什么在onGet() 方法中this._articles 从被设置为null?
2) 通常如何处理数据延迟,因为我调用服务的组件由于文章尚未设置而崩溃?
【问题讨论】:
标签: angular http observable latency subscribe