2013-04-06 29 views
5

Tôi đang xem phi tiêu từ góc nhìn phía máy chủ.Dart có trình lên lịch không?

Có bộ lập lịch biểu có thể thực thi các chủng phân lập tại một thời điểm cụ thể hoặc X lần trong một giờ không? Tôi đang nghĩ về dòng Quartz trong thế giới Java.

Trả lời

10

Dart có một vài lựa chọn cho các nhiệm vụ bị trì hoãn và lặp đi lặp lại, nhưng tôi không nhận thức được một cổng của thạch anh để DART (chưa ... :)

Dưới đây là những điều cơ bản:

  • Timer - chỉ cần chạy một chức năng sau khi một số chậm trễ
  • Future - mạnh mẽ hơn, composable, chức năng mà trở về giá trị "trong tương lai"
  • Stream - mạnh mẽ, suối composable các sự kiện. Có thể định kỳ.

Nếu bạn có tác vụ lặp lại, tôi khuyên bạn nên sử dụng Phát trực tuyến qua hẹn giờ. Bộ hẹn giờ không có lỗi xử lý nội bộ, vì vậy các ngoại lệ không thể thực hiện có thể làm giảm toàn bộ chương trình của bạn (Dart không có trình xử lý lỗi toàn cầu).

Đây là cách bạn sử dụng một Stream để tạo ra kết quả định kỳ:

import 'dart:async'; 

main() { 
    var stream = new Stream.periodic(const Duration(hours: 1), (count) { 
    // do something every hour 
    // return the result of that something 
    }); 

    stream.listen((result) { 
    // listen for the result of the hourly task 
    }); 
} 

Bạn đặc biệt yêu cầu về phân lập. Bạn có thể sinh ra một cô lập lúc bắt đầu chương trình, và gửi cho nó một tin nhắn mỗi giờ. Hoặc, bạn có thể sinh ra cô lập lúc bắt đầu chương trình, và bản thân cô lập có thể chạy bộ đếm thời gian hoặc dòng định kỳ của riêng nó.

Các vấn đề liên quan