angular - 如何在 Typescript 中为方法返回值
问题描述
我主要是后端开发人员,并且是打字稿的新手,并且有以下方法来返回类型
PullUserDataFromServer(guid: string): UserDataEntity {
this.http.get<UserDataEntity>(this.baseUrl + 'api/' + guid).subscribe(result => {
this.UserData = result;
console.log(this.UserData);
}, error => console.error(error));
console.log(this.UserData);
return this.UserData;
}
我注意到 this.UserData 在返回它之前保持为空,并且我无法从 rest 调用中传递类型。我怎样才能做到这一点?
解决方案
您无法从异步函数返回值。你可以返回一个 promise 或 observable 的UserDataEntity
.
观察方式——
PullUserDataFromServer(guid: string): Observable<UserDataEntity> {
return this.http.get<UserDataEntity>(this.baseUrl + "api/" + guid)
}
}
然后,
this.PullUserDataFromServer("some-id").subscribe(userData => {
// some code here.
})
承诺方式——
PullUserDataFromServer(guid: string): Promise<UserDataEntity> {
return this.http.get<UserDataEntity>(this.baseUrl + "api/" + guid).toPromise();
}
}
然后,
const userData = await this.PullUserDataFromServer("some-id");
// use userData in code.
推荐阅读
- c++ - 使用 2 个键的 cpp stl::priority 队列未正确排序
- c++ - 使用 mongocxx-driver 时包含头文件问题
- python - 错误..将日期转换为相应的天数
- java - 访问 CompletableFuture 链中的前一个输入参数
- stata - 跨变量发生的变化次数
- vb.net - 在datagridview vb.net中更改列的数据类型
- java - 为什么 Kubernetes 需要更新 cacerts
- python - cv2 显示视频流并在另一个功能完成后添加覆盖
- apache-kafka - Kafka Consumer 收不到某些消息
- c++ - 使用编写我自己的 kbhit 版本
对于 Linux