db.collection("NAME").get().then(doSomethingIfDataExist)
Ở lệnh trên, doSomethingIfDataExist
callback sẽ được thực hiện asynchronously với thread mà cậu đã gọi.
Ở code đầu tiên của cậu:
Ở góc nhìn của main process, cậu cơ bản làm điều này:
- Cậu khởi tạo mảng arr
- Nhờ database object lấy kết quả về từ database, dặn nó nếu lấy về thì đưa dữ liệu vào arr hộ.
- Cậu reverse mảng arr mà không quan tâm database object đã làm xong việc chưa.
Kết quả là cậu reverse mảng arr
khi nó chẳng có gì (vì DB object chưa xong việc).
Ở code này:
let arr = [];
db.collection("NAME").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
arr.push(doc.id);
})
arr.reverse();
})
Lại từ quan điểm của main process:
- Cậu khởi tạo mảng arr
- Nhờ database object lấy kết quả về từ database, dặn nó nếu lấy về thì đưa dữ liệu vào arr hộ, xong xuôi rồi reverse array đó hộ dùm.
- Cậu ngồi chơi
Kết quả là database object giúp cậu làm hết việc khó, bao gồm cả lấy dữ liệu, để nó vào mảng, rồi lộn mảng đó lại.
Hope it helps!