Tại sao kết quả nhận được là mảng các promise, khi chỉ return kiểu number?

chào các bạn
khi mình post orderItem cái màu xanh bên phải.
mình đang không hiểu, vì sao mình nhận được 1 mảng promise orderItemsIDlist, khi mà bên trong dòng 21 mình đã await nó rồi- tức là chương trình chờ dóng đó thực thi song? mình không hỏi cách khắc phục vì cách khắc phục là dùng promiseALl, mình chỉ hỏi vì sao mình nhận được mảng promise đó!
cảm ơn các bạn.

Return value

A new array with each element being the result of the callback function.

callback function lúc này là một async function, khi chạy async funtion hiển nhiên trả về promise

6 Likes

Bạn ơi bên trong hàm async luôn có await, tức là chờ thực thi song thì thực thi tiếp, vậy là có kết quả, vậy tại sao họ thiết kế hàm async luôn return 1 promise để làm gì ạ?

const a = some_async_function();
const b = await some_async_function();

a lúc này là promise, b lúc này là kết quả sau khi chạy xong
concept của hàm map là mỗi element của mảng mới chính là giống như a, chỉ gọi thôi chứ không await

còn vì sao thiết kế async trả về promise ư, bạn học js tới nơi tới chốn rồi hãy đặt thắc mắc
non-blocking, event-loop, event-driven…
còn rất nhiều keywork hay ho để tìm hiểu

5 Likes

“concept của hàm map là mỗi element của mảng mới chính là giống như a, chỉ gọi thôi chứ không await”
đoạn này bạn nói ko rõ ràng về cú pháp nên mình ko hiểu bạn nói gì

Hàm sử dụng keyword async là hàm bất đồng bộ, hàm trả về Promise<kết quả> cho dù bạn không viết gì mà phải cần tới async API trong thân hàm cả;

async function a() {
   return 1;
}
sẽ tương đương:
function a() {
  return new Promise((resolve) => {
    resolve(1);
  });
}
2 Likes

bạn thấy biến ab như ví dụ bên trên không? có khác gì nhau không? cả 2 đều là gọi hàm

2 Likes

async...await chẳng qua là để tránh sử dụng Promise.prototype.then thôi :slight_smile:

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?