sync/async

Chờ là phần lớn thời gian của một chương trình có nối mạng. Ba chặng, đi từ nhận ra mình đang chờ tới chờ nhiều việc cùng lúc mà không rối.

9 cột mốc · 2 có bài trong app

Bắt đầu
  1. 1Nhận ra mình đang chờ

    Phân biệt việc tốn CPU với việc chỉ ngồi đợi — hai thứ cần cách xử lý khác hẳn nhau.

  2. 2Chờ nhiều việc cùng lúc

    Cho các khoảng chờ chồng lên nhau, thay vì nối đuôi.

  3. 3Khi việc chờ thành rắc rối

    Biết ba kiểu hỏng mà code bất đồng bộ hay mắc.

    • Quên awaittự tìm hiểuHàm trả về một lời hứa chứ không phải kết quả, và code chạy tiếp như chưa có gì xảy ra.
    • Lỗi bị nuốttự tìm hiểuPromise lỗi mà không ai bắt thì im lặng. Đây là lý do phải có try/catch quanh await.
    • Vòng lặp gọi tuần tựtự tìm hiểuawait trong for biến mười việc song song được thành mười lần chờ nối đuôi.
Đích

Lộ trình dừng ở đây

Ba chặng trên đủ cho phần lớn code bất đồng bộ bạn viết. Phần dưới là hướng đi tiếp.

  • Event loopCơ chế quyết định thứ tự chạy nằm dưới tất cả những thứ trên — có bài riêng trong app.
  • Huỷ một việc đang chờAbortController: bỏ giữa chừng một request không còn cần nữa.
  • Giới hạn số việc chạy cùng lúcPhát một nghìn request cùng lúc thì máy chủ bên kia không cảm ơn bạn.
  • Thử lại và backoffMạng lỗi thì thử lại, nhưng thưa dần chứ không dồn dập.