【发布时间】:2017-08-28 21:59:21
【问题描述】:
我有一个 angular 2 服务,它有一个返回下拉列表数据的函数。该函数返回一个承诺。
来自以下服务的代码:
getStuff(): Promise<Stuff>
{
return this.http.get("http://myserver/myServices/myService.svc/rest/getStuff")
.map(res => this.dataHandler.extractData(res)).toPromise()
.catch(err => this.dataHandler.handleHttpError(err));
}
然后我从保存事件调用此函数以更新新保存的数据,以便使用此数据的下拉列表将具有最新数据。
我调用此服务的代码:
ngOnInit()
{
this.onSavedSubscription = this.OnSaved.subscribe((data: any) =>
{
if (data.IsSuccessful)
{
this.myService.getStuff().then(
res=>
{
this.myService.stuffs = res;
}
);
}
}
调用上述代码时,会调用 getStuff 函数,但在它可以从数据库返回更新数据之前,代码执行转移到“then”,并用 res.myService.stuffs 中包含的旧数据填充 this.myService.stuffs。我不确定发生了什么。我认为“then”在 getStuff 完成执行并返回新数据之前不会执行。请帮忙。
【问题讨论】:
-
你想得对,getStuff().then() 在得到解决之前不应该执行 getStuff().then() 。工商管理硕士您还有其他与这部分冲突的代码,很难说。
-
感谢您对 metamaker 的评论。是的,我认为 getStuff().then() 只会在 getStuff 完成后执行,并且从 getStuff 返回的数据将在 getStuff().then() 的 res 参数中。这是它第一次的行为方式,但是在随后的页面访问中,getStuff().then() 在 getStuff() 完成之前执行,并且 res 包含旧数据。
标签: angular typescript promise angular-promise