0
嘗試從內部循環獲取數據,但得到延遲。越來越晚的響應內部循環nodejs
在代碼中,我從祖先的SQL表中獲取用戶列表。我需要這些祖先檢查它們的根值(層次結構/樹結構)。如果祖先角色是銷售經理,則爲每個用戶添加銷售經理名稱。
爲例,其是不工作:
如果用戶本身是父,值推入數組。 (WORKS)
如果用戶有父項(如user_id 3被user_id 2添加,並且2被添加1),則1是3的祖先。進入內部循環。
值推到相同的陣列中,如果該數組內,但打印不顯示如果循環
這裏外面打印是代碼顯示:
var sql_query='SELECT *,GetAncestry(id) as anstry FROM users' //get ancestors using sql function
con.query(sql_query, function(err,rows) {
if(err) throw err;
if(rows) {
console.log('length rows'+rows.length) // prints 5
var rows_salesinfo=[]
var ancestors=[]
rows.forEach(function(rows) {
if(rows.anstry !='') {
var array = JSON.parse("[" + rows.anstry + "]");
} else {
var array = []
}
if(array.length > 0) {
// inner loop starts
con.query('SELECT id,role,firstname,lastname FROM users WHERE users.id IN ('+array+')', function(demoErr,demoRows) {
if(demoErr) throw demoErr;
if(demoRows.length > 0) {
var keepGoing = true;
demoRows.forEach(function(index,value,callback) {
if(keepGoing) {
if(index.role == 'sales_manager') {
console.log(rows.id)
rows.salesmanager = index.firstname+" "+index.lastname
rows_salesinfo.push(rows)
keepGoing = false;
}
}
console.log(rows_salesinfo) // this inner loop values print here
})
} else {
rows_salesinfo.push(rows)
}
})
} else {
console.log(rows.id) // works
rows.salesmanager=''
rows_salesinfo.push(rows) // works
}
})
console.log('6new')
console.log(rows_salesinfo) // works before response of inner loop
console.log('length rows_salesinfo'+rows_salesinfo.length) // length 3
}
})
的可能的複製[如何返回從響應異步調用?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – GilZ