file_bug655682.sjs (1101B)
1 var timer; 2 var callback; 3 4 function handleRequest(request, response) { 5 if (request.queryString.includes("trigger")) { 6 setState("triggered", "triggered"); 7 response.setHeader("Cache-Control", "no-cache", false); 8 response.setHeader("Content-Type", "text/javascript; charset=utf-8", false); 9 response.write(";"); 10 } else { 11 // Reset the state when running more than once in same browser session. 12 setState("triggered", ""); 13 14 response.processAsync(); 15 response.setHeader("Cache-Control", "no-cache", false); 16 response.setHeader("Content-Type", "text/html; charset=utf-8", false); 17 response.write("<table><tr><td>A</td> "); 18 response.bodyOutputStream.flush(); 19 timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer); 20 21 callback = function () { 22 if (getState("triggered") == "triggered") { 23 response.write("<td>B</td></tr></table>"); 24 response.finish(); 25 } else { 26 timer.initWithCallback(callback, 10, Ci.nsITimer.TYPE_ONE_SHOT); 27 } 28 }; 29 timer.initWithCallback(callback, 10, Ci.nsITimer.TYPE_ONE_SHOT); 30 } 31 }