我需要按顺序执行以下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函数。
答案 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)