节点光纤/未来callback与多个参数
期货如何处理有多个参数的callback? 这对于我可以用于未来的每一次使用都是至关重要的。 github的例子显示它只处理一个参数。
Github自述文件的例子是
var fileNames = readdir('.').wait();
但是怎么样的一个MySQL调用
client.query("select * from employees", function(err, results, fields) { // callback function returns employees array callback(results); });
如何使用期货wait()
方法得到这三个( err
, results
和fields
)?
编辑
实验告诉我,callback的第一个参数,在这种情况下, err
总是作为error handling,如果值是truthy,则抛出。 第二个参数被分配。 任何进一步的论据都被我忽略了。
为client.query创build一个包装,返回两个结果的数据参数。
client.prototype.query2 = function ( sql, callback ) { this.query(sql, function(err, results, fields) { var data={result:result, fields:fields}; callback(err,data); } };
我最近创build了比“期货”更简单的抽象,也是基于Fibers。 我还没有用真实世界的数据库例子testing我的代码。 请尝试它,并帮助我testing它,如果你可以: https : //github.com/luciotato/waitfor