Hỏi về "cron job" trong javascript

Cho em hỏi là em muốn mặc định thứ sáu hằng tuần sẽ run function dưới đây trong javascript thuần thì làm như thế nào vậy ạ.

function getQuantityPendingAccount() {
    fetch(WEB_API + "User/GetByStateUser?IDState=1")
    .then(function (response) {
        return response.json();
    })
    .then(function (response) {
        let data = {
            Subject: 'THÔNG BÁO DUYỆT CỘNG TÁC VIÊN',
            Name: 'Thành viên',
            Count: response.length
        }
        sendEmail(data)
    })
}

Bạn đang nói đến java script “thuần” chạy trên trình duyệt hay trong nodejs

  1. Nếu dùng Nodejs có thể dùng node-schedule
  2. Nếu chạy trên trình duyệt, thì bạn nên học lại mô hình client-server. Vì bản chất trình duyệt nó không chạy liên tục để biết chính xác là thứ 6 hàng tuần cần tự động chạy cái script đó, nó chạy theo phiên làm việc (session). Hơn nữa nó cũng chẳng thể gửi mail được.
6 Likes

Dạ em chạy trên js thuần ạ.

@@@@

Mình đang hỏi javascript chạy trên môi trường nào.
Javascript không thể chạy độc lập, nó có thể chạy trên browser (google chrome) khi được include vào 1 file html
hoặc cũng có thể chạy trên Nodejs để làm backend.

Trường hợp của bạn có thể gọi là Schedule, Task Schedule, hoặc Background Job. Bạn có thể tìm từ khoá này trên google.
thứ này chỉ có thể chạy trên backend mà thôi.

Còn chạy trên trình duyệt là điều không thể:

  • Vì trình duyệt không chạy liên tục, session ngắn, và không chạy ngầm.
5 Likes

Bạn có thể dùng new Date().getDay() để lấy ngày trong tuần.

3 Likes

Trình duyệt không phải là chương trình chạy thường trú trên máy tính nên việc chạy vào ngày nhất định thì có thể nếu ngày đó có mở trình duyệt lên vào duyệt web, còn đúng giờ/ phút thì bó tay nhé.

Cách tiếp cận vấn đề: kiểm tra xem ngày hôm nay có phải là ngày thứ 6 hay không khi mở trang web ra, nếu phải thì chạy hàm, gần gần như sau:

var thu = ['CN', 'Hai', 'Ba', 'Tu', 'Nam', 'Sau', 'Bay'];
var hom_nay = new Date();
var thu_sau = thu[home_nay.getDay()] == 'Sau' ? true : false;
if (thu_sau) {
   getQuantityPendingAccount();
}
7 Likes

Phải chi mấy đứa nó hiểu dc cái này.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?