请帮助使用以下代码。我在selectCb函数中返回“result”变量时遇到问题。 “result”已分配并在selectCb范围内正常工作,但在范围之外我无法访问它。
function queryDB(client,queryString) {
result = ''; //declare global variable
client.query(queryString, function selectCb(error, results, fields) {
if (results.length > 0) result = results[0];
console.log(result['id']); //WORKS HERE
});
client.end();
console.log(result['id']); //DOES NOT WORK - UNDEFINED
return result; //return result array
};
var data = queryDB(client,"select id from table");
console.log(data['id']) //DOES NOT WORK - UNDEFINED;
答案 0 :(得分:1)
您需要将回调作为参数,并在拥有数据时调用它:
function queryDB(client, queryString, callback) {
client.query(queryString, function selectCb(error, results, fields) {
if (results.length > 0) {
callback(results[0]);
}
});
};
var data = queryDB(client,"select id from table", function (data) {
console.log(data['id']);
});
async等库可以在回调过于嵌套时提供帮助。