// When an async function awaits, if Frame.onPop processes microtasks, // the async function itself will not run. It'll run later. // // This is a reentrancy test, like Frame-onPop-generators-03.
let g = newGlobal({newCompartment: true});
g.log = "";
g.eval(`
async function f() {
log += "1";
debugger;
log += "2";
await Promise.resolve(3);
log += "3"; return"ok";
}
`);
let dbg = Debugger(g);
dbg.onDebuggerStatement = frame => {
frame.onPop = completion => { // What we are really testing is that when onPop is called, we have not // yet thrown this async function activation back into the hopper.
g.log += 'A';
drainJobQueue();
g.log += 'B';
let status = "FAIL - g.f() did not resolve";
g.f().then(value => { status = value; });
assertEq(g.log, "12AB");
drainJobQueue();
assertEq(g.log, "12AB3C");
assertEq(status, "ok");
Messung V0.5
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.