我在JavaScript中的新手,我有點堅持與異步的方式執行JS代碼...建設項目的數組中的異步過程
這裏是我的代碼:
var marketPlaces = []
body.rows.forEach(function(doc) {
marketPlacesDB.get(doc.id, function(err, body){
if (err) {
callback(err, null)
} else {
console.log("Ajout d'une marketplace")
marketPlaces.push({id: body._id, name: body.name})
}
})
})
console.log("Retour des résultats")
callback(null, { marketPlaces: marketPlaces })
body.rows是一個數組,其中包含我想要在marketPlaces數組中返回的對象的ID。對於每個元素,我需要向數據庫發出一個新請求以獲取對象的詳細信息(這裏只是「名稱」)。
結果是一個空數組,因爲foreach循環在get函數的回調返回之前結束。
我不知道如何使這個「同步」。
感謝您的回答。 Philippe。
什麼數據庫您使用的?它可能有一個承諾界面,可以使'Promise.all()'更容易。 – jfriend00
一旦你使用'marketPlacesDB.get(doc.id,function(err,body){...')進入異步(延遲)時間線,除非你有時間機器讓你你需要在這個函數中做所有事情(包括新的異步調用) – Redu