UNPKG

@ou-imdt/utils

Version:

Utility library for interactive media development

14 lines 710 B
/** * dynmaically checks the state of a list of Promises, only resolving when all listed Promises are * (equivalant to Promise.all but allows the list to be dynamically updated after being called) * @param {array[Promise]} promises - dynamic list of Promise objects * @returns {Promise<array>} */ export default async function isPromiseResolvedAll(promises) { const { promise, resolve } = Promise.withResolvers(); const current = [...promises]; const data = await Promise.all(promises); const hasChanged = (promises.length !== current.length || promises.some((el, index) => el !== current[index])); hasChanged ? resolve(await isPromiseResolvedAll(promises)) : resolve(data); return promise; };