tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

onEnterFrame-async-01.js (777B)


      1 // async functions fire onEnterFrame each time they resume, like generators
      2 
      3 let g = newGlobal({newCompartment: true});
      4 g.eval(`
      5    async function timeout(n) {
      6        for (let i = 0; i < n; i++) {
      7            await Promise.resolve(i);
      8        }
      9    }
     10    async function job() {
     11        let racer = timeout(5);
     12        await timeout(3);
     13        await racer;
     14    }
     15 `);
     16 
     17 let dbg = Debugger(g);
     18 let log = "";
     19 let nicknames = ["job", "t5", "t3"];
     20 dbg.onEnterFrame = frame => {
     21    if (!("nickname" in frame))
     22        frame.nickname = nicknames.shift() || "FAIL";
     23    log += "(" + frame.nickname;
     24    frame.onPop = completion => { log += ")"; };
     25 };
     26 
     27 g.job();
     28 drainJobQueue();
     29 assertEq(log,
     30         "(job(t5)(t3))" +
     31         "(t5)(t3)".repeat(3) +
     32         "(t5)(job)(t5)(job)");