var testInsertAndUpdate = function (conn,cb) {
conn.execute(
"SELECT age FROM test WHERE id LIKE 1 ",
function a (err, result)
{
if (err) {
return cb(err, conn);
} else {
console.log ("----- Select Test --------");
cute = result.rows;
console.log ('cute:'+cute);
return cb(null, conn);
}
});
};
输出 cute:13 我想在另一个函数的if语句中调用cute的值 if (cute !== null) { }
搞清楚回调函数、作用域(链)
@captainblue2013 是。。。正在看
方法不止一种,最简单地是把cute挂到全局域,简单的情况可以,但复杂一点的情况不利于异步控制。
你可以用Promise var testInsertAndUpdate = function (conn,cb) { return new Promise(function (resolve, reject) { conn.execute(command, function (err, result) { if (err) { reject(err); } else { resolve(cute); } }) } } 外层代码用的时候,就可以围绕Promise来编程了 testInsertAndUpdate(…) .then(cute) { … } .fail(function(err) { … }); 花一点时间熟悉Promise吧,你问的其实是一类问题。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
也可以用RxJS这样的东西,有兴趣也可以去了解。
不好意思,这个编辑器的代码格式化太难用了。
@flamingtop 非常感谢你的回答!是的,昨天刚学习了Promise的写法,针对回调函数中值的调用很有效,你写的很详细,让我对Promise更清晰了,十分感谢!