0

我正在创建一个 node.js 模块,它通过 XML-RPC 与程序通信。这个程序的 API 最近在某个版本之后发生了变化。出于这个原因,当创建客户端时(createClient),我想询问程序的版本(通过 XML-RPC),并以此为基础定义我的 API。

这样做的问题是,因为我是异步执行上述操作,所以在实际使用客户端之前工作可能还没有完成。换句话说:

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

doSomething()将失败,因为尚未设置 API 定义,我想是因为程序未返回 HTTP XML-RPC 响应。

有什么方法可以解决这个问题?我希望能够有一个名为的变量client并使用它,因为稍后我将调用它的方法来获取信息(将通过回调返回)。

4

1 回答 1

4

这样设置:

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

任何时候有 IO,它都必须是异步的。另一种方法是使用 promise/future/coroutine 类型的东西,但是 imo,学习爱回调是最好的:)

于 2011-08-03T07:20:55.787 回答