模拟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);
}
以上是 模拟Angular 2中的长响应 的全部内容, 来源链接: utcz.com/qa/267335.html