2
返回值我在CoffeeScript的以下功能:如何從一個異步調用
newEdge: (fromVertexID, toVertexID) ->
edgeID = this.NOID
@client.methodCall('ubigraph.new_edge', [fromVertexID, toVertexID], (error, value) ->
if(error)
console.log('ubigraph.new_edge error: ' + error)
edgeID = value
)
edgeID
其中@ client.methodCall指XMLRPC庫。 我的問題是如何返回值作爲edgeID。我是否使用回調?
如果是這樣,那麼回調看起來應該是這樣的:?
# callback is passed the following parameters:
# 1. error - an error, if one occurs
# 2. edgeID - the value of the returned edge id
newEdge: (fromVertexID, toVertexID, callback) ->
@client.methodCall('ubigraph.new_edge', [fromVertexID, toVertexID], (error, value) ->
if(error)
console.log('ubigraph.new_edge error: ' + error)
edgeID = value
callback(error, value)
)
即使有一個回調,的用戶函數可以決定在每種情況下做什麼,但基本上,您的答案是:回調是做到這一點的方法。是我一直在尋找的人。謝謝 – lowerkey 2012-02-22 20:03:11
@lowerkey:真的夠了,但單獨的回調似乎是通常的方法; jQuery至少對成功和錯誤條件使用單獨的回調函數,所以大多數人都會很熟悉它。我已經(嘗試)澄清這一點。 – 2012-02-22 20:18:29
大多數node.js庫都使用單個回調,並將錯誤作爲第一個參數,這使得它們都可以相互無縫地彼此通信。我會建議通過單獨的回調。 – 2012-02-22 23:52:44