Angular Promises 有回调
Angular Promises with callbacks
我有以下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 函数。
我不是 coffeescript 专家,但在正常情况下 javascript,您可以做一些简单的事情,只需创建一个匿名函数,该函数将首先调用您的回调,然后检索 SomeData2:
getSomeData1: ->
@http.get("someRestUrl1")
getSomeData2: ->
@http.get("someRestUrl2")
getSomeData3: ->
@http.get("someRestUrl3")
getSomeData1().then(function(){
normalJsFunction();
getSomeData2
}).then(getSomeData3)
您可以 return 一个承诺,该承诺解析为回调中应在 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)
我有以下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 函数。
我不是 coffeescript 专家,但在正常情况下 javascript,您可以做一些简单的事情,只需创建一个匿名函数,该函数将首先调用您的回调,然后检索 SomeData2:
getSomeData1: ->
@http.get("someRestUrl1")
getSomeData2: ->
@http.get("someRestUrl2")
getSomeData3: ->
@http.get("someRestUrl3")
getSomeData1().then(function(){
normalJsFunction();
getSomeData2
}).then(getSomeData3)
您可以 return 一个承诺,该承诺解析为回调中应在 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)