Javascript 有棱角的承诺

Javascript 有棱角的承诺,javascript,angularjs,coffeescript,promise,angular-promise,Javascript,Angularjs,Coffeescript,Promise,Angular Promise,我在用Angular和CoffeeScript。 我需要按顺序执行3个函数getSomeData1()、getSomeData2()、getSomeData3()。我有以下几点,效果很好 getSomeData1: -> @http.get("someRestUrl1") .success((data) => getSomeData2() getSomeData2: -> @ht

我在用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吗

对此有何建议

只需省略那些
success
调用,直接从每个函数返回
$http
承诺即可。不要忘记将回调传递给
。然后()
,而不是函数调用

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

getSomeData1().then(getSomeData2).then(getSomeData3)
我是否需要使用
$q


不,因为
$http
已经为您提供了。您只需兑现承诺。

谢谢。是否可以将从第一个调用检索到的数据传递给第二个调用?是的,
getSomeData2
将其作为参数接收。只需给回调函数一个参数:-)