开发者

node.js asynchronous initialization issue

开发者 https://www.devze.com 2023-03-25 17:25 出处:网络
I am creating a node.js module which communicates with a program through XML-RPC. The API for this program changed recently after a certain version. For this reason, when a client is created (createCl

I am creating a node.js module which communicates with a program through XML-RPC. The API for this program changed recently after a certain version. For this reason, when a client is created (createClient) I want to ask the program its version (through XML-RPC) and base my API definitions on that.

The problem with this is that, because I do the above asynchronously, there exists a possibility that the work has not finished before the client is actually used. In other words:

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

doSomething() will fail because the API definitions 开发者_开发百科have not been set, I imagine because HTTP XML-RPC response has not returned from the program.

What are some ways to remedy this? I want to be able to have a variable named client and work with that, as later I will be calling methods on it to get information (which will be returned via a callback).


Set it up this way:

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

Any time there is IO, it must be async. Another approach to this would be with a promise/future/coroutine type thing, but imo, just learning to love the callback is best :)

0

精彩评论

暂无评论...
验证码 换一张
取 消