我正在创建一个node.js模块,它通过XML-RPC与程序通信。该程序的API最近在某个版本之后发生了变化。出于这个原因,当创建客户端(createClient
)时,我想向程序询问它的版本(到XML-RPC )并在其上建立我的API定义。
这个问题是,因为我是异步执行上述操作,所以在实际使用客户端之前,工作可能还没有完成。换句话说:
var client = program.createClient();
client.doSomething();
doSomething()
将失败,因为尚未设置API定义,我想是因为HTTP XML-RPC响应尚未从程序返回。
有哪些方法可以解决这个问题?我希望能够有一个名为client
的变量并使用它,因为稍后我将调用它上面的方法来获取信息(将通过回调返回)。
答案 0 :(得分:4)
以这种方式设置:
program.createClient(function (client) {
client.doSomething()
})
任何时候有IO,它必须是异步的。另一种方法是使用promise / future / coroutine类型的东西,但imo,只是学会喜欢回调最好:)