Hi ạ, anh chị giải thích giúp em tại sao lại có sự khác biệt trong 2 cách này với ạ. Mục đích của em là dùng await
để thay thế Promise.all
. Em cảm ơn (Em mới học promise)
const ABC = _ => {
return new Promise(resolve => {
setTimeout(_ => {
resolve("Hello");
}, 5000);
});
}
const Test1 = async () => {
const a = ABC();
const b = ABC();
return await a + await b;
// Tương đương với Promise.all([a, b])
// a, b đều chạy cùng lúc => Mất 5s để return
}
const Test2 = async () => {
return await ABC() + await ABC();
// chạy tuần tự => Mất 10s để return
}
Test1().then(x => console.log(x)); // 5s ra kết quả
Test2().then(x => console.log(x)); // 10s mới ra kết quả
Trong Test2
thì ABC() thực thi xong trả về một Promise rồi gán object promise này vào a
.
.
.
.
Cho em hỏi thêm: Trong js mọi thứ đều là object. Function cũng là object, vậy promise chính xác là một object hay một function? Trên MDN docs thì định nghĩa promise là object "The Promise object represents the eventual completion (or failure) of an asynchronous operation and its resulting value"
nhưng một số web lại nói nó là object hoặc function https://promisesaplus.com/