Tag: 发电

使用诺言等待数据库操作

我有一个函数调用另一个函数,它连接到数据库来获得一些价值。 在执行完成之前,我不能继续进行,因为该值将用于数据库上的另一个事务。 我正在使用yield来确定该方法的完成,并promise解决或拒绝响应。 这是我如何做到的: co(function*() { rec.x = yield getX(a, b); //use rec to update something else conn.update(rec); }).catch((err) => { console.error(err.stack) }); function getX(a, b) { return conn.getVal(a, b); } exports.getVal = function(a, b) { return sql.connect(connStr).then(function() { return new sql.Request() .input('a', sql.VarChar(100), a) .input('b', sql.VarChar(50), b) .execute('someProc').then(function(recordSet) { return Promise.resolve(recordSet[0][0]); }); }); }; […]

为什么node.js生成器不能按预期工作?

给定以下两个代码片断,为什么事务对象在工作案例中可见,但在另一个案例中不可见? 工作案例: return db.transaction(function(transaction) { return co(function*() { // transaction is visible, do something with it -> works } } 不是工作案例: var c = co(function*() { // transaction is NOT visible -> does not work! }); return db.transaction(function(transaction) { return c; }); 是否有可能在第二种情况下使交易可见?