【问题标题】:Node fibers/future callbacks hell节点纤程/未来回调地狱
【发布时间】:2014-08-27 15:11:43
【问题描述】:

我尝试在我的 node.js 项目中使用 wait.for.js 库,但无法从查询中获取数据库数据。

这是一个例子(我们在 coffeescript 的数据库类中):

execute: (sqlOrder) ->  
       resultSet = ""
       this.connection.query(sqlOrder,(err,results,fields) =>
         resultSet = results;
       )
       console.log results 

但实际上这对回调过程是行不通的

然后我使用“Wait.for”并尝试按照数据库示例“https://github.com/luciotato/waitfor”但是有一个问题,wait.launchFiber()在哪里;行吗?

所以我尝试了......但没有工作

query2 : ( sql, callback ) =>
        wait.for(@connection.query(sql,(err, result, field)->
            data = {results:result, fields:field}
            callback(err,data)
        ))


    back : (err,data) ->
        @result = data
        console.log("I'm in back")

    prepare: (strOrder) =>
        wait.launchFiber(@query2,strOrder,@back);
        console.log(@result)

问题是,有一个类“A”的实例调用方法execute(“Select * from my_table”),而类“B”及其方法“execute(strOrder)”返回一个数组或结果的对象。

拜托,谁能帮我找到解决办法?

【问题讨论】:

标签: javascript node.js coffeescript wait node-fibers


【解决方案1】:

我解决了这个问题,在 github 中我遵循了这个:

“您需要在 Fiber 中才能使用 wait.for。启动 Fiber 的理想位置是在请求到达时进行处理:”

var server = http.createServer(function(req, res){ console.log('req!'); wait.launchFiber(handler,req,res); //处理一个光纤,保持节点旋转 }).listen(8000);

而且我能够正确使用 wait.for

谢谢。

【讨论】:

    猜你喜欢
    • 2013-11-07
    • 2012-11-29
    • 2015-07-11
    • 2018-09-11
    • 2017-04-06
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多