【问题标题】:node.js asynchronous initialization issuenode.js 异步初始化问题
【发布时间】:2011-10-18 20:22:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: asynchronous node.js coffeescript event-driven-design


    【解决方案1】:

    这样设置:

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

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

    【讨论】:

    猜你喜欢
    • 2022-11-24
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2022-06-13
    • 2013-03-25
    • 2015-02-19
    相关资源
    最近更新 更多