打字稿中的Angular js Http承诺
Posted
技术标签:
【中文标题】打字稿中的Angular js Http承诺【英文标题】:Angular js Http promises in typescript 【发布时间】:2016-12-23 00:13:03 【问题描述】:我的代码有问题,希望有人能帮助我理解并指出正确的方向。问题在于嵌套承诺。具体方法需要向服务器发起两次 Http 请求——第一次成功完成后的第二次,第二次的结果要在调用类中解析。
每当在包含单个 Http 调用的方法中使用我在示例中展示的模式时,它都会按预期工作。代码如下:
服务1:
public class Service1 extends IService1
public PostData(url : string, data: any) : ng.IHttpPromise<any>
return this.$http.Post(url, data);
public GetData (url : string) : ng.IHttpPromise<any>
return this.$http.Get(url);
服务2:
public class Service2 extends IService2
private srv1 : IService1;
static inject = ["Service1"];
public constructor(service1)
this.srv1 = service1;
public GetLetters(ids : number[]) : ng.IHttpPromise<any>
var scope = this;
return this.srv1.PostData("api/letters", ids).success(function (data)
return scope.srv1.GetData("api/lettters/" + data);
)
控制器
public class Controller1
private service2 : IService2;
private array : Letter[];
static inject = ['Service2']
public constructor (Service2 : IService2)
this.service2 = Service2;
public someFunc() : void
var scope = this;
// I have problems here when I try to retrieve the letters
this.service2.GetLetters(someIds).success((data) =>
array = data;
);
我应该在这里采取不同的方法吗?控制器内部的数据是来自 GetLetters 方法的外部承诺的解析数据。我想得到内部promise的resolved数据
【问题讨论】:
【参考方案1】:Service2
方法 GetLetters
应该返回一些东西..
public class Service2 extends IService2
...
public GetLetters(ids : number[]) : ng.IHttpPromise<any>
var scope = this;
//this.srv1.PostData("api/letters", ids).success(function (data)
return this.srv1.PostData("api/letters", ids).success(function (data)
return scope.srv1.GetData("api/lettters/" + data);
)
否则它只是被评估......
【讨论】:
我的错,我忘了在 Post 方法之前提到 return。我还在控制器中使用了.then
。固定的。关于你的回答,通过在两个函数中都做一个 return 语句,它会实现我的目标吗? Controller中解析出来的数据会有字母?以上是关于打字稿中的Angular js Http承诺的主要内容,如果未能解决你的问题,请参考以下文章
从 Angular 2 打字稿中的 HTML 获取复选框值。
MEAN STACK angular 2:从打字稿中的多个api获取数据