Nút ngủ
Các bạn đọc like ủng hộ MUO nhé. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm
Không giống như các ngôn ngữ lập trình khác, JavaScript không có phương thức ngủ tích hợp. Vì vậy, bạn không thể đơn giản gọi một hàm sleep() để tạm dừng một Nút. chương trình js. Tuy nhiên, có nhiều cách khác mà bạn có thể làm cho chương trình đợi trong một khoảng thời gian xác định Show Hướng dẫn này thảo luận về ba cách tiếp cận. setTimeout, async/await và gói lời hứa ngủ Sử dụng setTimeout() để đợi một thời gian cụ thểHàm setTimeout() lập lịch mã cho thời gian chạy để thực thi sau khi một khoảng thời gian đã đặt đã trôi qua. Nó chấp nhận một chức năng và thời gian trễ tính bằng mili giây. Đây là cú pháp Ví dụ: giả sử bạn có một chức năng in trên bảng điều khiển Để chạy hàm trên sau hai giây trôi qua, hãy chuyển hàm và thời gian trễ 2000ms cho hàm setTimeout() Mặc dù điều này hoạt động nhưng không đảm bảo chức năng của bạn sẽ chạy chính xác sau hai giây. Chắc chắn sẽ mất ít nhất khoảng thời gian đó, nhưng có thể mất nhiều hơn setTimeout() có chính xác không?Có, nhưng với một số lưu ý. setTimeout() là một hàm JavaScript không đồng bộ có nghĩa là nó không bị chặn. Mã bạn lên lịch được thêm vào vòng lặp sự kiện trong khi phần còn lại của chương trình tiếp tục Sau khi thời gian trễ trôi qua, chương trình của bạn sẽ thực thi mã đã lên lịch, nhưng chỉ khi rảnh rỗi để thực hiện. Nếu mã khác nằm trong ngăn xếp cuộc gọi, thì mã đó sẽ thực thi trước, ngay cả khi mã đã lên lịch sắp chạy. Đây là nơi có thể xảy ra thời gian trễ thêm, do đó không chính xác Xét chương trình sau Đây là những gì bảng điều khiển sẽ hiển thị khi bạn chạy nó Chương trình này giới thiệu một độ trễ, nhưng nó chỉ làm trễ mã mà nó chuyển đến setTimeout(). Phần còn lại của chương trình tiếp tục, với mã được lên lịch chỉ làm gián đoạn chương trình sau khi hết thời lượng. Nếu bạn muốn chạy tất cả mã này theo thứ tự, với một khoảng dừng ở giữa, sử dụng setTimeout() sẽ không hoạt động Một cách khác là viết mã đồng bộ sẽ chặn thực thi miễn là bạn cần. Ví dụ, bạn có thể sử dụng do. vòng lặp while để chặn luồng thực thi cho đến khi hết thời gian trì hoãn Hàm delay() lặp lại cho đến khi thời gian hiện tại bằng hoặc lớn hơn thời gian bắt đầu của nó cộng với độ trễ. Nhược điểm của phương pháp này là sử dụng nhiều CPU, đặc biệt là với độ trễ lớn. việc làm. vòng lặp while phải tính thời gian còn lại sau mỗi mili giây Sử dụng Async/Await để trì hoãn một nút. chương trình jsMột biểu thức chờ khiến việc thực thi tạm dừng cho đến khi một Lời hứa được giải quyết. Nó cho phép bạn chạy mã không đồng bộ như thể nó là mã đồng bộ, nhưng hiệu quả hơn bằng cách chặn thực thi thủ công. Bạn chỉ có thể sử dụng sự chờ đợi bên trong một chức năng được đánh dấu là không đồng bộ Đây là đầu ra của chương trình trên Sử dụng Gói lời hứa ngủGói lời hứa ngủ đơn giản hóa quá trình tạm dừng Node. chương trình js. Bạn chỉ cần gọi nó và chỉ định thời gian trễ tính bằng mili giây Bắt đầu bằng cách cài đặt nó qua npm ________số 8Đây là một ví dụ về cách bạn có thể sử dụng nó trong chương trình của mình Khi bạn chạy chương trình, đầu ra sẽ như sau 0Chọn một cách tiếp cận phù hợpTriển khai chức năng ngủ trong Node. js có thể phức tạp. Khi quyết định cách thực hiện, hãy xem xét những gì bạn muốn đạt được. Nếu bạn chỉ muốn trì hoãn một số mã, trong một khoảng thời gian tối thiểu, setTimeout() là một lựa chọn tốt. Nhưng nếu bạn muốn tạm dừng thực hiện toàn bộ chương trình của mình, bạn nên sử dụng async/await |