Javascript: Pause A Function And Wait On A Global Variable
There is a global variable window.listNodes that is an array. This variable is refreshed each 3 seconds and is filled sequentially. Another function onOpen() is triggered by the u
Solution 1:
This could use setTimeout
and a custom interval to wait, for example, 500ms, to do it:
functiononOpen() {
if (window.listNodes.length === 3) {
// Do something
} else {
// Wait and when window.listNodes.length === 3:setTimeout(onOpen, 500);
}
});
};
socket.onopen = onOpen;
Solution 2:
With Promises:
functiongetListNodes() {
returnnewPromise(functioncheck(resolve) {
if (window.listNodes.length === 3) { returnresolve(window.listNodes); }
setTimeout(() =>check(resolve), 500);
});
}
socket.onopen = asyncfunction() {
const listNodes = awaitgetListNodes();
// use listNodes normally
};
Within an async
function, the await
keyword will pause the function until the Promise it waits for is resolved (or rejected).
The Promise returned from getListNodes()
will retry the lookup every 500 milliseconds, and resolve if it finds that the length is sufficient.
Take note that natively, async
functions are only supported in Chrome and in Edge. You will need Babel + Babel polyfill to use them everywhere.
Post a Comment for "Javascript: Pause A Function And Wait On A Global Variable"