我无法理解 co 以及如何在另一个生成器中利用其功能。本质上,我有一个需要执行 SQL 查询的生成器,然后对每一行执行一些复杂的操作,然后再将它们输出给调用函数(在 of 循环中)。
someGen 代码对我来说看起来不正确,并且没有按预期工作。所以我的问题是双重的。首先,我如何利用生成器内部的 co-mysql 产生从每一行创建的对象。其次,我正在努力在哪里使用 co,更重要的是为什么。
无功能尝试:
const co = require('co')
, mysql = require('co-mysql')
, MYSQL_RECORD_SET = 0
let pool = null
let getConnectionPool = function(){
if(!pool) pool = mysql.createPool(config.db);
return pool
}
let someGen = function*() {
co(function*() {
let connection = getConnectionPool()
let recordset = yield connection.query('SELECT ? as jobId', [ 99 ]);
if (recordset && recordset[MYSQL_RECORD_SET]) {
var jobs = _.map(recordset[MYSQL_RECORD_SET], function (row) {
return {id: row.jobId }
})
yield jobs
}
})()
}
for (let job of someGen()) {
console.log(job)
}