- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我做了一个 goog.Timer
对象 ( http://closure-library.googlecode.com/svn/docs/class_goog_Timer.html ) 与 new goog.Timer(1)
通过监听滴答事件每毫秒运行一个函数。但是,该函数似乎每 100 毫秒运行一次。
我假设我的函数需要一段时间才能运行(当然 javascript 是单线程的),所以需要一段时间才能进入下一轮。因此,我将计时器的间隔设置为 100,并且它每 1/10 秒可靠地运行一次。
Google Closure 库是否有一个更可靠的计时器,它只在间隔内精确地运行一个函数?如果没有足够的时间在一个周期内运行一个函数,我可以取消前一个调用并在下一次调度滴答时运行它。
1 Câu trả lời
Nicholas Zakas 写了一篇很好的总结 Timer resolution in browsers 在他的博客上。正如尼古拉斯所指出的,HTML5 timers specification (截至 2012 年 8 月 2 日)规定 setTimeout()
的最小间隔和 setInterval()
是 4 毫秒。
我编写了以下演示应用程序来测试 goog.Timer
的最小间隔延迟.
<đầu>
goog.Timer Test
đầu>
goog.Timer Test
goog.require('goog.Timer');
var tickCount = 0;
var timer = new goog.Timer(1);
var mainDiv = document.querySelector('#mainContent');
/**
* Tick callback.
*/
var tickCounter = function() {
tickCount++;
if (tickCount % 1000 === 0) {
var timeElapsed = goog.now() - startTime;
mainDiv.innerHTML = 'goog.Timer tick events: ' + tickCount +
'
actual elapsed milliseconds: ' + timeElapsed +
'
milliseconds per goog.Timer tick: ' + timeElapsed/tickCount;
}
};
startTime = goog.now();
timer.start();
goog.events.listen(timer, goog.Timer.TICK, tickCounter);
goog.Timer
大约为 4.2 毫秒滴答事件,非常接近允许的最小浏览器计时器分辨率 4 毫秒。
关于timer - 我怎样才能让 goog.Timer 更精确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813922/
Tôi đang sử dụng bộ đếm thời gian để chạy một sự kiện theo định kỳ ở những khoảng thời gian khá dài (2 phút). Mọi thứ đều hoạt động tốt. Tuy nhiên, tôi muốn sự kiện được kích hoạt ngay khi bộ đếm thời gian được tạo (thay vì phải đợi 2 phút). Lưu ý rằng tôi không thể thực hiện điều này chỉ bằng cách gọi một phương thức, vì nó mất một thời gian để chạy và
Tôi đang kiểm tra một số mã cũ khủng khiếp có chứa các sự kiện Timer và một số mã dài chứa các lệnh gọi DoEvents. Phiên bản đơn giản hơn như sau: Private Sub tmrProcess_Timer()
Tôi đang cố gắng tạo một ứng dụng Windows Forms và muốn triển khai bộ đếm thời gian. public void timerStart() { DateTime bây giờ = DateTime
Tôi đang tạo một lớp mới để làm cho lớp System.Timers.Timer phù hợp hơn với nhu cầu của tôi. Tôi tạo lớp mới của mình như thế này... sử dụng System.Timers; class BtElapsedEv
Gần đây tôi đã kiểm tra một số bộ hẹn giờ khả thi và System.Threading.Timer và System.Timers.Timer có vẻ cần thiết với tôi (vì chúng hỗ trợ nhóm luồng). Tôi đang tạo một trò chơi và tôi dự định sử dụng
Trước tiên tôi xin nói rằng đây không hẳn là vấn đề mà là vấn đề cần giải quyết. Bây giờ tôi đã có giải pháp và mọi thứ đều ổn với tôi. Nhưng tôi muốn biết tại sao lần đầu tiên lại gặp vấn đề. Đây là mã tôi có hiện tại và nó hoạt động đúng như tôi mong đợi:
Trong bài viết này: http://msdn.microsoft.com/en-us/magazine/cc164015.aspx tác giả nêu rằng System.Threading.Timer không an toàn với luồng. Kể từ đó
Bối cảnh: Tôi có một bộ đếm thời gian dùng để theo dõi thời gian đã trôi qua kể từ khi sự kiện serialPort DataReceived được kích hoạt. Tôi đang tạo giải pháp riêng cho việc này thay vì sử dụng sự kiện hết thời gian tích hợp vì tôi đang nhận được luồng dữ liệu liên tục
Tôi đang xem mã Flutter Timer và phương thức cancel(). Khi tôi muốn xóa một bộ đếm thời gian, tôi có thể sử dụng hai dòng sau: timer.cancel(); timer = null; hoặc tôi có thể làm như sau: timer
Tôi đang cố gắng sử dụng bộ đếm thời gian trong C# để chạy một phương thức ở khoảng thời gian năm giây. Tuy nhiên, mã này có vẻ không hoạt động. Tôi không gặp lỗi nào khi chạy nó, nhưng chương trình (tôi đang chạy trong bảng điều khiển) đóng ngay sau IP.timer1.Start(). Tim
Tôi đang cố gắng sử dụng bộ đếm thời gian trong C# để chạy một phương thức ở khoảng thời gian năm giây. Tuy nhiên, mã này có vẻ không hoạt động. Tôi không gặp lỗi nào khi chạy nó, nhưng chương trình (tôi đang chạy trong bảng điều khiển) đóng ngay sau IP.timer1.Start(). Tim
Tôi gặp lỗi: 'Timer' là tham chiếu không rõ ràng giữa 'System.Windows.Forms.Timer' và 'System.Threading'
Trong ứng dụng của mình, tôi phải gửi thông tin nhịp tim định kỳ đến một ứng dụng "anh chị em". Sử dụng System.Timers.Timer/Threading.Timer hoặc sử dụng một luồng với vòng lặp while và Thread.Sleep
Gần đây tôi phải đối mặt với thử thách viết Dịch vụ Windows. Tôi cần yêu cầu URL theo định kỳ và kiểm tra tính khả dụng của nó. Để thực hiện điều này, tôi quyết định khởi tạo bộ đếm thời gian trong OnStart. Phương thức dịch vụ và thực hiện tất cả công việc trong sự kiện timer_Tick.
Có vẻ như các phiên bản System.Timers.Timer duy trì trạng thái sự kiện thông qua một số cơ chế, nhưng các phiên bản System.Threading.Timer thì không. Chương trình mẫu với System.Threading.Time tuần hoàn
Tôi đã tạo một đối tượng goog.Timer (http://closure-library.googlecode.com/svn/docs/class_goog_Timer.html) với lệnh go mới
Khi bạn đang xử lý bộ đếm thời gian .net "thô", bạn có thể truyền vào một xử lý chờ để được gọi sau khi bộ đếm thời gian Win32 bị hủy và bạn có thể cho rằng lệnh gọi lại của bạn sẽ không được gọi. (và bộ đếm thời gian sẽ được coi là "chết" bởi GC) Cách sử dụng System.Timer
Tôi muốn gợi ý tự động hoàn thành deoplete bật lên nhanh hơn, điều này đòi hỏi phải thiết lập g:deoplete#auto_complete_delay. Trợ giúp cho biết điều này đòi hỏi hỗ trợ +timers. Làm thế nào tôi có thể kích hoạt bộ hẹn giờ này trong cấu hình? Cảm ơn!
Tôi đang tự hỏi liệu có cách hợp lý nào để xác định khả năng tải của đối tượng Timers.Timer không? Hay chính xác hơn là chức năng của luồng. Có ai biết có vấn đề gì khi khởi động một số lượng lớn (hàng trăm) luồng bằng lớp Timer không? EDIT: Để làm việc, chúng ta sẽ bắt đầu một số
Tôi đang tạo một WindowsService với một Timer được liên kết với một EventHandler có vòng lặp vô hạn; Tôi muốn có thể kích hoạt timer này một lần trong phương thức OnStart() của dịch vụ, sau đó
Tôi là một lập trình viên xuất sắc, rất giỏi!