具有回调的Angular Promises

时间:2015-07-09 10:04:44

标签: javascript angularjs coffeescript

我需要按顺序执行以下3个功能:

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

getSomeData1().then(getSomeData2(param1, param2)).then(getSomeData3)

现在,如果我想在调用函数getSomeData2之前将函数附加到函数getSomeData1,那么最好的方法是什么?

新回调不包含任何$ http请求。这是一个普通的javascript函数。

2 个答案:

答案 0 :(得分:2)

我不是一个coffeescript人,但在普通的javascript中,你可以做一些简单的事情,只需创建一个首先调用你的回调的匿名函数,然后检索SomeData2:

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

getSomeData1().then(function(){
    normalJsFunction();
   getSomeData2
}).then(getSomeData3)

答案 1 :(得分:1)

您可以返回一个promise,该promise将解析为应在getSomeData2之前调用的回调中的值。我不知道CoffeeScript,我认为$ q服务可用:

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

function callback(data) {
    return $q.when(callbackReturnValue) 
}

getSomeData1().then(callback).then(getSomeData2(param1, param2)).then(getSomeData3)