SetTimeout trong JavaScript là gì?

setTimeout() là một phương thức bên trong đối tượng cửa sổ, nó gọi hàm đã chỉ định hoặc đánh giá một biểu thức JavaScript được cung cấp dưới dạng chuỗi sau một khoảng thời gian nhất định chỉ một lần. Đầu ra sau đây cho thấy sự tồn tại của phương thức setTimeout() bên trong đối tượng cửa sổ

SetTimeout trong JavaScript là gì?

Tất cả chúng ta đều đã nhiều lần sử dụng báo thức hoặc lời nhắc, phương thức setTimeout() này cũng có mục đích tương tự trong các ứng dụng web. Chúng tôi sử dụng điều này để trì hoãn một số loại thực thi. Nó cũng được sử dụng cho hoạt ảnh và thao tác DOM trong jquery

cú pháp.  

setTimeout(function, time);

Thông số.  

  • hàm số. Nó là tham chiếu đến một chức năng sẽ chạy sau một thời gian nhất định
  • thời gian. Số mili giây sau đó hàm đã cho sẽ thực thi

Giá trị trả về. Nó trả về một Id hẹn giờ có thể hữu ích sau này trong trường hợp bạn muốn xóa đồng hồ đếm ngược đó cho chức năng

ví dụ 1. Phần sau minh họa bản demo cơ bản của phương thức setTimeout()

Trong Javascript, mọi thứ được thực thi bên trong ngữ cảnh thực thi. Vì vậy, ngữ cảnh thực thi toàn cầu sẽ được tạo và đẩy vào ngăn xếp cuộc gọi của công cụ JavaScript. Bên trong bối cảnh thực thi toàn cầu, giai đoạn cấp phát bộ nhớ bắt đầu và tất cả các biến và hàm nhận được không gian trong Memory Heap. Hàm có tên alertAfter3Seconds sẽ có dung lượng trong Heap và không có biến

Chuỗi thực thi bắt đầu và công cụ JavaScript gặp câu lệnh nhật ký bảng điều khiển, do đó, một dòng sẽ được in trên bảng điều khiển của công cụ dành cho nhà phát triển chrome. Hàm setTimeout() đăng ký hàm được cung cấp dưới dạng tham số sẽ được thực thi sau một số mili giây được cung cấp (3000). Trình duyệt lưu giữ một bản ghi nội bộ của nó và ngay sau khi bộ đếm thời gian hết hạn, nó sẽ đưa chức năng đó vào hàng đợi gọi lại. Bây giờ, ngay khi ngăn xếp cuộc gọi trở nên trống rỗng, vòng lặp sự kiện đang chạy liên tục sẽ nhận thấy nó và loại bỏ chức năng gọi lại đó khỏi hàng đợi gọi lại và đẩy nó vào ngăn xếp cuộc gọi. Trong trường hợp này, chỉ có một ngữ cảnh thực thi là toàn cầu và ngay khi bảng điều khiển. log thực thi không có gì trong ngăn xếp cuộc gọi, vì vậy vòng lặp sự kiện sẽ loại bỏ chức năng gọi lại khỏi hàng đợi gọi lại và đẩy nó vào ngăn xếp cuộc gọi

Khi chức năng gọi lại của chúng tôi nằm trong ngăn xếp cuộc gọi, khá rõ ràng để hiểu điều gì sẽ xảy ra. Bên trong chức năng, có một cảnh báo đơn giản

SetTimeout trong JavaScript là gì?
 

Javascript




     

    function alertAfter3Seconds() {

đầu ra. Đây là cảnh báo hiển thị sau 3 giây do phương thức setTimeout()

SetTimeout trong JavaScript là gì?

Ghi chú. Vòng lặp sự kiện sẽ chỉ đẩy chức năng gọi lại bên trong ngăn xếp cuộc gọi của công cụ JS nếu nó trống. Hàm được cung cấp cho setTimeout() không cần phải được thực thi ngay sau một phần nghìn giây đã cho, đây là thời gian tối thiểu mà sau đó trình duyệt sẽ đưa hàm đó vào hàng đợi gọi lại, Không thể đoán trước được nó phải đợi bao nhiêu thời gian để được đẩy vào

ví dụ 2. Phần sau đây chứng minh rằng vòng lặp sự kiện sẽ chỉ đẩy chức năng trong ngăn xếp cuộc gọi khi nó trống

Bối cảnh thực thi toàn cầu sẽ được tạo và đẩy vào ngăn xếp cuộc gọi của công cụ js. Sau đó, giai đoạn cấp phát bộ nhớ bắt đầu và hàm nằm trong setTimeout() và hai biến này sẽ nhận bộ nhớ trong heap. Trong giai đoạn thực thi luồng, dòng đầu tiên của nhật ký giao diện điều khiển được in. Trong dòng tiếp theo, setTimeout() đăng ký một chức năng bên trong API web và sau đó bộ hẹn giờ bắt đầu bên trong và ngay sau khi 1000 mili giây kết thúc, nó sẽ được đưa vào hàng đợi gọi lại

Đồng thời, công cụ JavaScript đang bận thực thi mã của nó. Chúng tôi đã lưu trữ ngày hiện tại trong một biến. Cuộc hẹn. now() trả về số mili giây đã trôi qua kể từ thời gian kỷ nguyên. Vì vậy, để chuyển đổi nó thành giây, chúng tôi đã chia nó cho 1000. Trong phần tiếp theo, chúng tôi đã chỉ định thời gian hiện tại + 5 cho một mục đích

Chúng tôi đang kiểm tra một điều kiện nếu thời gian hiện tại nhỏ hơn Thời gian dự kiến, Thời gian dự kiến ​​đang giữ Thời gian hiện tại + 5. Chúng tôi liên tục thay đổi giá trị của thời gian hiện tại với Ngày. Hiện nay(). Khi thời gian hiện tại không còn ít hơn so với thời gian dự kiến, vòng lặp sẽ bị ngắt. Điều kiện bên trong dấu ngoặc đơn sẽ ngắt vòng lặp sau 5 giây. Ngăn xếp cuộc gọi của chúng tôi trống, không có gì để thực thi và vòng lặp sự kiện đang chờ tình huống này đẩy chức năng gọi lại bên trong ngăn xếp cuộc gọi JS. Chức năng nằm trong ngăn xếp cuộc gọi nên rất dễ hiểu điều gì sẽ xảy ra, chỉ đơn giản là bảng điều khiển. log bên trong chức năng gọi lại thực thi. Bạn có nhận thấy vòng lặp while mất thêm 5 giây để thực thi mã và sau đó chức năng gọi lại được thực thi. Vì chúng tôi đã đặt 1000 mili giây cho thời gian chờ đã đặt, chúng tôi dự kiến ​​sẽ thực thi chức năng gọi lại đó sau 1 giây. Trên thực tế, mili giây được cung cấp đó là thời gian mà sau đó hàm sẽ nằm trong hàng đợi gọi lại, hàm sẽ chỉ nằm trong ngăn xếp cuộc gọi js khi ngăn xếp cuộc gọi trống.  

Hàm setTimeout trong JS là gì?

Phương thức setTimeout() thực thi một khối mã sau khoảng thời gian đã chỉ định . Phương thức thực thi mã chỉ một lần. Cú pháp thường được sử dụng của JavaScript setTimeout là. setTimeout(hàm, mili giây);

setTimeout và setInterval trong JavaScript là gì?

setTimeout(function, milliseconds ) Thực thi một chức năng, sau khi đợi một số mili giây đã chỉ định. setInterval(function, milliseconds ) Tương tự như setTimeout(), nhưng lặp lại việc thực thi hàm liên tục

Sự khác biệt giữa lời hứa và setTimeout là gì?

setTimeout trì hoãn việc thực thi khối mã theo một khoảng thời gian cụ thể. Lời hứa là giao diện cho phép thực thi mã không đồng bộ . Một lời hứa cho phép mã tiếp tục thực thi trong khi bạn đợi một hành động khác hoàn thành. Thông thường đây là một cuộc gọi mạng.

SetTimeout có phải là một cuộc gọi lại không?

Phương thức setTimeout() lên lịch gọi lại một lần sau thời gian đã chỉ định tính bằng mili giây . Phương thức ngay lập tức trả về một mã định danh cho sự kiện hết thời gian chờ. Bạn có thể sử dụng ID này để hủy chức năng gọi lại theo lịch trình bằng phương thức clearTimeout().