Monday, October 15, 2007

javascript interval

น้อง sand ถามปัญหามาเรื่อง จะใช้ dojo ดึงข้อมูลจาก server ทุกๆ 30 วินาที

ใน javascript มันมี function ที่ชื่อ interval ให้ใช้
window.onLoad=function() {
window.setInterval(myrefresh, 30000);
}

function myrefresh() {
... do something
}

ถ้าเราอยากดึงข้อมูลจาก server ก็แค่ใส่ logic ให้ไปใช้ function dojo.xhrGet
เพื่อดึงข้อมูลแบบ ajax มา update content บนหน้าจอ

ข้างบนเป็นแบบง่ายสุด
ถ้าต้องการ feature มากขึ้นเช่น
start, stop interval ได้
dojo ก็มี object ที่ชื่อ dojox.timing.Timer ให้ใช้
วิธีใช้ ก็ตามนี้
dojo.require("dojox.timing._base");

dojo.addOnLoad(function() {
var timer = new dojox.timing.Timer(30 * 1000);
timer.onTick=function() {
... do something
}
timer.start();
});


หรือถ้าเรามีเหตุการณ์ที่ต้องการให้เกิดตาม sequence ที่กำหนด
ก็ใช้ object dojox.timing.Sequence ก็ได้
ลองดูตัวอย่าง วิธีการกำหนด sequence
var seq = [
{func: [showMessage, window,
"i am first"], pauseAfter: 1000},
{func: [showMessage, window,
"after 1000ms pause this should be seen"], pauseAfter: 2000},
{func: [showMessage, window,
"another 2000ms pause and 1000ms pause before"], pauseAfter: 1000},
{func: [showMessage, window,
"repeat 10 times and pause 100ms after"], repeat: 10, pauseAfter: 100},
{func: returnWhenDone} // no array, just a function to call
];

Related link from Roti

1 comment:

Anonymous said...

ขอบคุณมากครับคงต้องเอาจริงเอาจังกับ javascript แล้วคงหนีไม่พ้นแล้วครับ