模拟Angular 2中的长响应
问题描述:
为了教育目的,我需要模拟Angular 2中服务器的长响应。我有代码模拟Angular 2中的长响应
getTasks() : Observable<Task[]> {
return this.http.get('data/tasks.json').map(response => {
return response.json();
});
}
// using
getTasks().subscribe(groups => {
this.tasks = groups;
});
并且需要服务器响应至少1秒。在角1.5我这样做是
this.getTasks = function() {
return $http.get("data/tasks.json").then(function (response) {
return $timeout(function() {
return response.data;
}, 1000);
};
}
在角2根据本post我试图
getTasks() : Observable<Task[]> {
return this.http.get('data/tasks.json').map(response => {
return Observable.of(response.json()).delay(1000);
});
}
和
getTasks() : Observable<Task[]> {
return this.http.get('data/tasks.json').map(response => {
return Observable.create((obs: Observable<Task[]>) => {
obs.next(response.json());
obs.complete();
).delay(1000);
});
}
,但有打字稿编译错误或getTasks().subscribe
获取和可观而不是任务收集。看起来我错过了一些东西。请帮忙。谢谢。
答
错误是由于类型不匹配造成的。您的getTasks
方法声明为返回类型Observable<Task[]>
但是,map方法正在返回observable而不是数组(类型为Task [])。您只需要像常规那样返回observable,然后添加延迟方法以延迟可观察的发射。
getTasks() : Observable<Task[]> {
return this.http.get('data/tasks.json').map(response => {
return response.json();
})
.delay(1000);
}
很酷,非常感谢。 –