我有一个service
,它制作了一个HttpGet方法,我想将从服务器返回的对象传递给Task component
中的数组
我知道使用Promise是更好的方法,但是我对此并不熟悉。
这就是我到目前为止所做的:
组件:
userTaskList: Task[ ];
this.data=this.taskService.getAllTasks()
this.userTaskList.push(this.data);
服务:
getAllTasks() {
const req = this.http.get(`${this.serverUrl}/GetTasks`).toPromise().then(
res => {
console.log("success" , res);
});
}
我在日志中找到了对象。
success [{
JS: "Id": 27,
JS: "UserId": 12,
JS: "Name": "Teeest",
JS: "Description": "99",
JS: "Latitude": 0,
JS: "Longitude": 0,
JS: "Radius": 99,
JS: "Created": "2018-08-29T14:01:51.0272032+03:00",
JS: "LastUpdate": "2018-08-29T14:01:51.0272032+03:00",
JS: "IsActive": true
JS: }]
但是如何将其发送到组件?
我想在userTaskList
中列出对象。
谢谢!!
答案 0 :(得分:2)
我知道使用Promise的更好方法,但是我并不那么熟悉
不。一点也不。 Promise不支持,重试,防抖动,switchMaps等。
更不用说http请求是自动完成的(rxjs POV)
无论如何:
将代码更改为:
组件:
this.taskService.getAllTasks().toPromise().then((data)=> { this.userTaskList = data});
服务:
getAllTasks() {
return this.http.get(`${this.serverUrl}/GetTasks`) ;
}
OR
async foo(){
let data = await this.taskService.getAllTasks().toPromise() ;
this.userTaskList = data
}
服务应公开功能而无需调用。 调用时,您将获得该值。
顺便说一句-我会用Observable完成的。但我继续您的榜样。
所以我要用这个:
this.taskService.getAllTasks().subscribe((data)=> { this.userTaskList = data});
getAllTasks() {
return this.http.get(`${this.serverUrl}/GetTasks`) ;
}