模拟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

回到顶部