-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Example code:
let reqWaiter = {
resolve: null,
promise: null,
settled: async () => {
await reqWaiter.promise;
await settled();
},
};
let id = 0;
function requestWaiter() {
id++;
let self = id;
console.log('creating waiter', self);
reqWaiter.resolve?.();
reqWaiter.promise = new Promise((resolve) => {
reqWaiter.resolve = () => {
console.log('Resolving id', self);
resolve();
waitForPromise(
new Promise((finish) => {
requestAnimationFrame(() => {
console.log('clearing promise and resolve', self);
reqWaiter.promise = null;
reqWaiter.resolve = null;
finish();
});
}),
);
};
});
}And usage:
// in some async handler
reqWaiter.resolve?.();
// in your test actions
requestWaiter() // or reqWaiter.create();
// do actions which trigger async behavior
await reqWaiter.settled();Why?
sometimes you need to wait outside of the waiter system
(maybe test-helpers use the settled state, and you need something to assure your mocked / passed callback holds up test execution before continuing)
Metadata
Metadata
Assignees
Labels
No labels