From ed6de4446f997f5f40093449bfa23205e6afc1aa Mon Sep 17 00:00:00 2001 From: Patrizio Bekerle <patrizio@bekerle.com> Date: Fri, 3 Apr 2020 09:59:51 +0200 Subject: [PATCH] Add async foreach functions --- packages/common/utils.js | 48 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/packages/common/utils.js b/packages/common/utils.js index 56c870c0..d6e8753c 100644 --- a/packages/common/utils.js +++ b/packages/common/utils.js @@ -248,7 +248,7 @@ export const getAssetURL = (path) => { * @param timeout * @param interval */ -export const pollFunc = (fn, timeout, interval) => { +export const pollFunc = (fn, timeout, interval) => { var startTime = (new Date()).getTime(); interval = interval || 1000; @@ -264,3 +264,49 @@ export const pollFunc = (fn, timeout, interval) => { } })(); }; + +/** + * Doing a async foreach for non-linear integer keys + * + * @param array + * @param callback + * @returns {Promise<void>} + */ +export async function asyncObjectForEach(array, callback) { + const keys = Object.keys(array); + + for (let index = 0; index < keys.length; index++) { + const key = keys[index]; + await callback(array[key], key, array); + } +} + +/** + * Doing a async foreach for non-linear integer keys with a copy of the array + * + * @param array + * @param callback + * @returns {Promise<void>} + */ +export async function asyncCopyObjectForEach(array, callback) { + const arrayCopy = {...array}; + const keys = Object.keys(arrayCopy); + + for (let index = 0; index < keys.length; index++) { + const key = keys[index]; + await callback(arrayCopy[key], key, arrayCopy); + } +} + +/** + * Doing a async foreach for linear integer keys + * + * @param array + * @param callback + * @returns {Promise<void>} + */ +export async function asyncArrayForEach(array, callback) { + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array); + } +} -- GitLab