人。我无法通过js回调返回解决一些问题。 所以,我们有下一个功能:
//Функция получения контакт листа пользователя
function get_contact_list(data) {
//Берем ID пользователя, который к нам пытается обратиться исходя из SESSION_ID
conn.query('SELECT id FROM users WHERE session_id="' + data['auth'] + '" LIMIT 1;', function(err, res) {
if (err) {
console.log(err);
}
//Разбираем результат
res.fetchAll(function(err, row) {
if (err) {
console.log(err);
}
//А теперь, собсна, выбираем контакты
conn.query('SELECT u.id, u.sname, u.fname, u.nick FROM users as u LEFT JOIN contacts AS c ON c.dep_id = u.id WHERE owner_id =' + row[0].id + ';', function(err, res) {
if (err) {
console.log(err);
}
//Разбираем результат
res.fetchAll(function(err, row) {
if (err) {
console.log(err);
}
//TAKE row HEREOF
NEED_OUT = row;
});
});
});
});
return NEED_OUT;
}
我需要从2-lvl回调中返回变量行,但如果我在全局对象中创建全局变量或写“行”,则它无法正常工作。帮帮我!谢谢!
答案 0 :(得分:3)
我相信你没有正确的异步代码概念。因为你的例子很长,这里有一些伪代码,可以显示异步代码的工作顺序。
// Timestamp: 0
function foo(input, cb) {
// Timestamp: 2
doSomeThingAsync(input, (result) {
// Timestamp: 5
result = transformResultSync(result);
cb(result);
});
// Timestamp: 3
}
// Timestamp: 1
foo('bar', function(result) {
// Timestamp: 6
console.log(result);
});
// Timestamp: 4
我希望它有所帮助。