Angular 中的承诺

Promises in Angular

我正在使用 Angular 和 CoffeeScript。 我有 3 个函数 getSomeData1(), getSomeData2(), getSomeData3() 需要按顺序执行。我有以下内容并且工作正常。

    getSomeData1: ->
        @http.get("someRestUrl1")
           .success((data) =>
              getSomeData2()

    getSomeData2: ->
        @http.get("someRestUrl2")
           .success((data) =>
              getSomeData3()

    getSomeData3: ->
        @http.get("someRestUrl3")

我想让它更具可读性,将所有函数放在一个地方。像,

getSomeData1()
.then(getSomeData2())
.then(getSomeData3())

这将有助于轻松理解操作顺序。

有什么建议可以实现吗?我需要使用 $q 吗?

Any suggestions to achieve this?

只需省略那些 success 调用并直接 return 来自每个函数的 $http 承诺。并且不要忘记将 回调 传递给 .then(),而不是函数调用。

getSomeData1: ->
    @http.get("someRestUrl1")
getSomeData2: ->
    @http.get("someRestUrl2")
getSomeData3: ->
    @http.get("someRestUrl3")

getSomeData1().then(getSomeData2).then(getSomeData3)

Do I need to use $q?

不,因为 $http 已经为您完成了。你可以消费承诺。