Skip to content

Instantly share code, notes, and snippets.

@nomi-san
Created May 5, 2026 07:54
Show Gist options
  • Select an option

  • Save nomi-san/da15311dfe506c81153a145a33d003cd to your computer and use it in GitHub Desktop.

Select an option

Save nomi-san/da15311dfe506c81153a145a33d003cd to your computer and use it in GitHub Desktop.
Nghệ thuật của Async và Promise

Nếu coi lập trình là cách con người mô phỏng thế giới, thì async/await và Promise trong JavaScript giống như một thứ văn chương đặc biệt — nơi hiện tại luôn bị kéo căng bởi tương lai, và mọi hành động đều mang trong mình một lời hứa chưa hoàn thành.


Trong lập trình đồng bộ, mọi thứ diễn ra như một câu chuyện tuyến tính: mở đầu, cao trào, kết thúc. Nhưng khi bước vào thế giới của Promise, ta không còn kể chuyện theo dòng thẳng nữa. Thay vào đó, mỗi hành động trở thành một “lời hứa” (promise) — rằng một điều gì đó sẽ xảy ra, nhưng không phải ngay lúc này.

Một Promise có ba trạng thái: chờ đợi (pending), hoàn thành (fulfilled), hoặc thất bại (rejected). Nghe rất giống đời sống: con người cũng luôn sống trong trạng thái “đang chờ” một điều gì đó — một kết quả, một cơ hội, hay một hồi đáp. Khi lời hứa được thực hiện, ta tiến lên; khi nó thất bại, ta buộc phải xử lý nỗi thất vọng đó (catch).


async/await xuất hiện như một nghệ thuật kể chuyện mới — nó làm cho những điều không đồng bộ trông như đang diễn ra tuần tự. Nhưng đó chỉ là ảo giác có chủ ý.

Khi ta viết:

const data = await fetchData();

ta đang “tạm dừng” câu chuyện tại đây. Nhưng thực chất, thế giới bên ngoài vẫn tiếp tục vận hành. JavaScript không ngừng chạy; nó chỉ chọn cách không kể những gì xảy ra trong lúc chờ đợi.

Điều này phản ánh một nghịch lý thú vị:

Ta tưởng mình đang kiểm soát dòng chảy thời gian, nhưng thực ra chỉ đang chọn cách diễn giải nó.


Promise và async/await cũng cho thấy một sự thật sâu sắc: tương lai luôn bất định, nhưng ta vẫn phải viết code như thể nó sẽ đến.

  • Ta viết .then() như một niềm tin.
  • Ta viết .catch() như một sự chuẩn bị cho thất bại.
  • Ta dùng await như một hành động kiên nhẫn.

Nếu nhìn theo góc độ văn học, thì:

  • Promise là một lời hứa chưa biết kết cục
  • async function là một câu chuyện có những khoảng lặng
  • await là dấu ba chấm (…) giữa hai biến cố
  • event loop là dòng chảy thời gian không bao giờ dừng lại

Cuối cùng, async/await không chỉ là cú pháp. Nó là cách con người học cách sống chung với sự không chắc chắn trong hệ thống của mình.

Ta không thể ép tương lai xảy ra ngay lập tức. Nhưng ta có thể viết code để chờ đúng cách.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment