Hướng dẫn settimeout nodejs - settimeout nodejs

Module timers trong NodeJS

Module timers trong NodeJS là một global object dùng để đặt thời điểm các hàm được gọi ở một vài khoảng thời gian. Bởi các hàm timer là những global object nên không cần phải khai báo require('timers') trong khi cần sử dụng các API của nó.trong NodeJS là một global object dùng để đặt thời điểm các hàm được gọi ở một vài khoảng thời gian. Bởi các hàm timer là những global object nên không cần phải khai báo require('timers') trong khi cần sử dụng các API của nó.

Các hàm timers khá là cần thiết trong quá trình lập trình, sử dụng nó trong NoedJS cũng giống như sử dụng với các ngôn ngữ khác như C, Python, Java,..nó giúp đặt thời gian các hàm có thể chạy một cách lặp lại.

Timers phân chia thành 2 loại function chính:

Set Timer function

  • setImmediate() : chạy ngay lập tức (như cái tên của nó) =)) chạy ngay lập tức (như cái tên của nó) =))
  • setTimeout() : chạy trong một khoảng thời gian. chạy trong một khoảng thời gian.
  • setInterval(): lặp đi lặp lại trong khoảng thời gianặp đi lặp lại trong khoảng thời gian

Clear timer functions

  • clearImmediate() : dừng một setImmediate objects, tạo bởi hàm setImmediate() dừng một setImmediate objects, tạo bởi hàm setImmediate()
  • clearTimeout() : dừng một setTimeout objects, tạo bởi hàm setTimeout() dừng một setTimeout objects, tạo bởi hàm setTimeout()
  • clearInterval() : dừng một setInterval objects, tạo bởi hàm setInterval() dừng một setInterval objects, tạo bởi hàm setInterval()

Các hàm Timers trong NodeJS

Phần này mình sẽ liệt kê ra các hàm timers hay dùng để các bạn có thể hiểu rõ hơn nhé. Các hàm timer trong NodeJS cũng giống như các API về timers cung cấp bởi trình duyệt ,nhưng các hàm timers trong NodeJS được xây dưng dựa trên NodeJS event loops (vòng lặp sự kiện).NodeJS event loops (vòng lặp sự kiện).

Lưu ý rằng hàm timers này được trình biên dịch định nghĩa chứ không có sẵn trong ngôn ngữ javascript nha các bạn !

Timer setInterval()

Hàm này có nhiệm vụ lặp lại sau một khoảng thời gian đặt trước. Để sử dụng ta có pháp:

setInterval(callback, delay[, ...args])

Có 3 tham số mà chúng ta có thể thêm vào:

  • callback:  hàm này sẽ được gọi khi khoảng thời gian delay xảy ra. hàm này sẽ được gọi khi khoảng thời gian delay xảy ra.
  • delay :  thời gian lặp lại của hàm callback được tính bằng mili giây  thời gian lặp lại của hàm callback được tính bằng mili giây
  • […args] : bất cứ gì bạn muốn truyền vào hàm callback : bất cứ gì bạn muốn truyền vào hàm callback

Nếu thời gian delay lớn hơn 2147483647 hoặc nhỏ hơn 1 thì sẽ tự động set về 1. Các số không phải số nguyên sẽ tự động được chuyển sang số nguyên. Trong trường hợp tham số callback ở NodeJS không phải là một hàm thì sẽ trả lại thông báo lỗi.

Chúng ta xem qua ví dụ bên dưới:

let a = setInterval(function () {
    console.log('repeat !!!')
    //in ra các tham số truyền vào của hàm callback
    console.log(arguments)
}, 1000, 'hocweb.vn', 'timer')
//Hàm setInterval sẽ trả lại một obejct
console.log(typeof a)

Trong đoạn code bên trên mình cho hàm callback chạy mỗi 1 giây mà truyền vào đó các agruments. Trong hàm callback sẽ log ra chuỗi reapeat !! và các tham số được truyền vào. Cho bạn nào chưa biết thì object agruments là object có sẵn trong các hàm chứa các tham số được truyền vào hàm đó. agruments. Trong hàm callback sẽ log ra chuỗi reapeat !! và các tham số được truyền vào. Cho bạn nào chưa biết thì object agruments là object có sẵn trong các hàm chứa các tham số được truyền vào hàm đó.

Timer setTimeout()

Khi hàm setTimeout được kích hoạt thì callback function trong Nodejs sẽ chạy sau một khoảng thời gian đặt trước. Ta có cú pháp như sau :setTimeout được kích hoạt thì callback function trong Nodejs sẽ chạy sau một khoảng thời gian đặt trước. Ta có cú pháp như sau :

setTimeout(callback, wait[, ...args])

có 3 tham số mà chúng ta có thể thêm vào:

  • callback:  hàm này sẽ được gọi khi khoảng thời gian wait xảy ra. hàm này sẽ được gọi khi khoảng thời gian wait xảy ra.
  • wait:  thời gian chờ của hàm callback được tính bằng mili giây thời gian chờ của hàm callback được tính bằng mili giây
  • […args] : bất cứ gì bạn muốn truyền vào hàm callback : bất cứ gì bạn muốn truyền vào hàm callback

Nếu thời gian delay lớn hơn 2147483647 hoặc nhỏ hơn 1 thì sẽ tự động set về 1. Các số không phải số nguyên sẽ tự động được chuyển sang số nguyên. Trong trường hợp tham số callback không phải là một hàm thì sẽ trả lại thông báo lỗi.

Lấy ví dụ nhỏ để các bạn hiểu rõ hơn nha :

setTimeout(function (){
    console.log('run !')
}, 2000)

Trong ví dụ này hàm callback sẽ chỉ được chạy sau 2 giây. Nó khá là đơn giản nên bạn xem hình bên dưới sẽ hiểu hơn nhé !

Hướng dẫn settimeout nodejs - settimeout nodejs

Timer setImmediate NodeJS

Như cái tên nó hàm này sẽ chạy ngay lập tức. Ta có cú pháp như sau :

setImmediate(callback, [, ...args])

có 3 tham số mà chúng ta có thể thêm vào:

  • callback:  hàm này sẽ được gọi khi khoảng thời gian wait xảy ra. hàm này sẽ được gọi ngay lập tức
  • wait:  thời gian chờ của hàm callback được tính bằng mili giây bất cứ gì bạn muốn truyền vào hàm callback trong NodeJS

[…args] : bất cứ gì bạn muốn truyền vào hàm callback

setImmediate(function() {
    console.log('1')
})
setImmediate(function() {
    console.log('2')
    setImmediate(function() {
        console.log('3')
    })
})

Nếu thời gian delay lớn hơn 2147483647 hoặc nhỏ hơn 1 thì sẽ tự động set về 1. Các số không phải số nguyên sẽ tự động được chuyển sang số nguyên. Trong trường hợp tham số callback không phải là một hàm thì sẽ trả lại thông báo lỗi.

1
2
3

Lấy ví dụ nhỏ để các bạn hiểu rõ hơn nha :

Trong ví dụ này hàm callback sẽ chỉ được chạy sau 2 giây. Nó khá là đơn giản nên bạn xem hình bên dưới sẽ hiểu hơn nhé !

Timer setImmediate NodeJS

Hướng dẫn settimeout nodejs - settimeout nodejs

Như cái tên nó hàm này sẽ chạy ngay lập tức. Ta có cú pháp như sau :

callback:  hàm này sẽ được gọi ngay lập tức