// This request should be blocked.
let lock_granted = false;
const blocked = navigator.locks.request(
res, lock => { lock_granted = true; });
// Verify we can't get it.
let available = undefined;
await navigator.locks.request(
res, {ifAvailable: true}, lock => { available = lock !== null; });
assert_false(available);
assert_false(lock_granted);
// Ask the worker to release it.
await postToWorkerAndWait(worker, {op: 'release', lock_id});
// Now we've got it.
const lock2 = await blocked;
assert_true(lock_granted);
}, 'Window and Worker - exclusive mode');
promise_test(async t => {
assert_implements(navigator.locks);
const worker1 = new Worker('resources/worker.js');
const worker2 = new Worker('resources/worker.js');
t.add_cleanup(() => { worker1.terminate(); worker2.terminate(); });
// This request should be blocked.
let lock_granted = false;
const blocked = navigator.locks.request(
res, lock => { lock_granted = true; });
// Verify we can't get it.
let available = undefined;
await navigator.locks.request(
res, {ifAvailable: true}, lock => { available = lock !== null; });
assert_false(available);
assert_false(lock_granted);
// Implicitly release it by terminating the worker.
worker.terminate();
// Now we've got it.
const lock = await blocked;
assert_true(lock_granted);
}, 'Terminated Worker - exclusive mode');
</script>
¤ Dauer der Verarbeitung: 0.14 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 ist noch experimentell.