Javascript typescript中的Angular js Http承诺

Javascript typescript中的Angular js Http承诺,javascript,angularjs,typescript,promise,Javascript,Angularjs,Typescript,Promise,我的代码有问题,我希望这里的人能帮助我理解并为我指出正确的方向。问题在于如何做出承诺。一个特定的方法需要向服务器发出两个Http请求——第一个请求成功完成后的第二个请求,第二个请求的结果应该在调用类中解析 每当在包含单个Http调用的方法中使用我在示例中显示的模式时,它都能按预期工作。代码如下: 服务1: public class Service1 extends IService1 { public PostData(url : string, data: any) : ng.IHtt

我的代码有问题,我希望这里的人能帮助我理解并为我指出正确的方向。问题在于如何做出承诺。一个特定的方法需要向服务器发出两个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);
    }
}

我在这里应该采取什么不同的方法?控制器内的数据是来自GetLetters方法外部承诺的解析数据。我想获得内部承诺的解析数据

A
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);
        })
公共类服务2扩展了IService2{
...
public GetLetters(id:number[]):ng.ihttpromise{
var范围=此;
//this.srv1.PostData(“api/字母”,ids).success(函数(数据){
返回此.srv1.PostData(“api/字母”,ids).success(函数(数据){
返回scope.srv1.GetData(“api/letters/”+数据);
})

否则它只是被评估…

我的错,我忘了在Post方法之前提到返回。我还在控制器中使用了
。然后
。修复。关于你的答案,通过在两个函数中都做一个返回语句,它能达到我的目标吗?控制器中解析的数据将包含字母?
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;
        });
    }
}
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);
        })