我在節點JS驗證碼/火力點:需要執行功能時的forEach函數結束
ref.child("recipts").once("value", function(usersSnap) {
usersSnap.forEach(function(reciptsSnap) {
reciptsSnap.forEach(function(reciptSnap) {
reciptSnap.ref.child("last_recipt").once("value", function(b) {
b.forEach(function(c) { //Here I fill some "product" object
});
});
reciptSnap.forEach(function(b) { //Here I fill some "product" object
});
});
});
});
我需要執行正當「reciptSnap」 forEachs完成的功能。我怎樣才能做到這一點,我嘗試使用變量i ++和i--但只適用於每次迭代。 我調用的函數是用於處理我用forEachs循環中的填充數據創建的產品對象。
我對'firebase'不熟悉,但它似乎並不嚴格相關。如果你在'forEach'內部運行的操作是異步操作,那麼你不能以正確的方式去做你想做的事情。更好的方法是在數組中使用promise,並使用'Promise.all()'執行它們:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/all –
我開始寫一個答案,但對這段代碼試圖做什麼以及數據結構的樣子感到困惑。你能分享這段代碼處理的JSON的小片段(如文本,沒有截圖)嗎?您可以通過點擊[Firebase數據庫控制檯](https://console.firebase.google.com/project/_/database/data)中的「導出JSON」鏈接來獲取此信息。 –
您確定需要執行reciptSnap.ref.child(「last_recipt」)。once(「value」)?在您的收據節點上獲取「value」時應該已包含這些數據。嘗試reciptSnap.child(「last_recipt」 ).forEach(相反,如果這樣的話,你的代碼不再是異步的,當內部的foreach完成後,一切都會好起來的) – arneson