2011-08-03 73 views
0

我正在創建一個node.js模塊,它通過XML-RPC與程序進行通信。該程序的API最近在某個版本後發生了變化。因此,當創建客戶端時(createClient),我想通過XML-RPC詢問程序的版本(),並將其定義在該API上。node.js異步初始化問題

這樣做的問題是,因爲我異步執行上述操作,所以在實際使用客戶端之前存在未完成工作的可能性。換句話說:

var client = program.createClient(); 
client.doSomething(); 

doSomething()因爲API定義尚未確定會失敗,我想是因爲HTTP XML-RPC響應並沒有從程序返回。

有什麼方法可以解決這個問題?我希望能夠有一個名爲client的變量並且可以處理這個變量,因爲稍後我將調用其中的方法來獲取信息(這些信息將通過回調函數返回)。

回答

4

設置它是這樣的:

program.createClient(function (client) { 
    client.doSomething() 
}) 

有IO任何時候,它必須是異步。另一種方法是使用promise/future/coroutine類型的東西,但是imo,只是學習愛回調是最好的:)

+0

我按照你在IRC上給出的建議去排隊請求,直到配置完成完了。非常感謝! –

+0

以下是精通伊薩克斯向我展示了IRC,感興趣的人:https://gist.github.com/1122098 –

+0

他還鏈接了他的npm項目的片段,他在其中做了類似的工作:https:// github。 COM /艾薩克/ NPM/BLOB /主/ npm.js#L161-232 –