具有多个参数的节点光纤/未来回调

时间:2012-12-11 22:01:34

标签: javascript node.js future node-fibers

期货如何处理具有多个参数的回调?这对于我可以用于期货的几乎所有用途都至关重要。 github示例显示它只处理一个参数。

Github Readme的示例是

var fileNames = readdir('.').wait();

但是像mysql调用的东西呢

client.query("select * from employees", function(err, results, fields) {
    // callback function returns employees array
    callback(results);
});

我如何使用期货err方法获得这三个(resultsfieldswait())?

修改

实验告诉我,回调的第一个参数(在本例中为err)始终被视为错误,如果值为真,则抛出。第二个参数已分配。任何进一步的论点都会被忽略。

1 个答案:

答案 0 :(得分:3)

为client.query创建一个包装器,返回一个带有两个结果的 data 参数。

 client.prototype.query2 = function ( sql, callback ) {
      this.query(sql,
              function(err, results, fields) {
                  var data={result:result, fields:fields};
                  callback(err,data);
              }
 };

我最近创建了比'期货'更简单的抽象,也基于纤维。 我还没有用真实的数据库示例测试我的代码。如果可以的话,请尝试并帮我测试一下:https://github.com/luciotato/waitfor