巢状函数的匿名函数的回传问题
发布于 10 年前 作者 grass0916 3139 次浏览 最后一次编辑是 8 年前

前辈们午安,

小弟尝试在连结 MySQL 时遇到了一些小问题。

问题如下:

我想要将 dbclient.query 的结果回传给呼叫 GetUsers() 的程式码,

但因为 dbclient.query 的 rows 仅存在于匿名函数(lambda)之中。

GetUsers = function () {
	dbclient.query("SELECT * FROM user", function (err, rows) {
		for (var i = 0 ; i < rows.length ; i++)
			console.log(rows[i].uid + " " + rows[i].email);
	});
}

GetUsers();

如今我想要将 SQL query 的结果给挪到外部使用,

但我不大想使用全域变数(global)暴力解决,

请问前辈们有什么建议吗?

GetUsers = function () {
	dbclient.query("SELECT * FROM user", function (err, rows) {
		return rows;
	});
}

rows = GetUsers();
2 回复
GetUsers = function (callback) {
    dbclient.query("SELECT * FROM user", function (err, rows) {
        callback(rows);
    });
}
GetUsers(function (rows) {
 // here is your rows.
});

@JacksonTian

谢谢前辈大力相助,

已经解决了。

回到顶部