5月 24 2011 分類: Programming 標籤: gjs 最近更新: 2011-05-24 GJS/GnomeShell - timeout GJS/GnomeShell 的運行環境,基本上是以事件為基礎。而它的事件處理迴圈,則是由 mainloop 負責。 mainloop 除了主要事件來源外,還提供了兩種可添加的事件來源,即 timeout 事件與 idle 事件。 本文為這些功能的使用範例。 const GLib = imports.gi.GLib; var Mainloop = imports.mainloop; //if (Mainloop == null) // Mainloop = imports.seed.mainloop; // a simulate one. var event_source1_id = Mainloop.timeout_add(500, function(){ print("repeat..."); // if return true, it will run again. return true; }); var event_source2_id = Mainloop.timeout_add(500, function(){ print("run only once..."); // if return false, it will be remove from mainloop. return false; }); var idle_count = 0; var idle_source_id = Mainloop.idle_add(function() { print("idle..." + idle_count); idle_count++; if (idle_count > 10) return false; // remove this source. return true; }, GLib.PRIORITY_DEFAULT_IDLE); Mainloop.timeout_add_seconds(2, function(){ if (event_source1_id > 0) { print("stop repeat"); Mainloop.source_remove(event_source1_id); print("after 2 seconds, this will quit"); event_source1_id = 0; } else { print("quit"); Mainloop.quit(''); } return true; }); Mainloop.run(''); 樂多舊網址: http://blog.roodo.com/rocksaying/archives/15700221.html