I'm shoving a bunch of script nodes with no src attribute into an array of promises that sets the src and then resolves or rejects, respectively onload or onerror. All of these are called in a Promise.all which I await. The problem is, it never stops waiting. I presume some of the individual promises are resolving or rejecting, but I can't figure out how to debug which ones aren't.
function loadScript (script) {
return new Promise(function(resolve, reject) {
// this happens for every script
script.setAttribute("src", script.getAttribute("data-src"));
script.onload = _ => resolve(script.src);
script.onerror = _ => reject(script.src);
});
}
// loadScripts : (graph, int) -> (string array) promise
async function loadScripts(g, order = 1) {
if (!g.has(order))
return []
else
return [
...await Promise.all(g.get(order).map(loadScript)),
// the script stops here after the first pass and never executes the
// next line. It just ... awaits the previous line
...await loadScripts(g, order + 1)
]
}
I got to this point by setting breakpoints in Chrome devtools and stepping, but I'm not sure, once we're sitting and awaiting, how to check the state of the individual promises, to see which ones are resolving and which are still pending.