节点光纤/未来的回调地狱

时间:2014-08-04 21:10:43

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

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

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

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

但实际上这不适用于回调过程

然后我用了#34; 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"调用方法执行(" Select * from my_table"),Class" B"用它的方法"执行(strOrder)"返回结果的数组或对象。

请有人帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,在github我跟着这个:

"你需要在光纤中才能使用wait.for。发射光纤的理想位置是当请求到达时,处理它:"

  

var server = http.createServer(function(req,res){       的console.log(' REQ'!);       wait.launchFiber(处理程序,REQ,RES); //处理光纤,保持节点旋转})。listen(8000);

我能够正确使用wait.for

感谢。