CNode

巢状函数的匿名函数的回传问题

Ggrass0916发布于12 年前最后回复12 年前2 回复3581 浏览0 收藏

前辈们午安,

小弟尝试在连结 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)

J
JacksonTian#1·12 年前
GetUsers = function (callback) {
    dbclient.query("SELECT * FROM user", function (err, rows) {
        callback(rows);
    });
}
GetUsers(function (rows) {
 // here is your rows.
});
G
grass0916#2·12 年前
引用 JacksonTian

@JacksonTian

谢谢前辈大力相助,

已经解决了。

参与回复
登录后即可参与回复。登录