@web3r/flowerkit
Version:
Tree-shakable JavaScript and TypeScript utility library for frontend/browser apps: DOM, events, arrays, objects, strings, date, JSON, and network helpers (ESM/CJS, SSR-friendly).
19 lines (18 loc) • 1.28 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});
/**
* Gets an aggregated result of async operation for each element of given Array
* @template T,U
* @param {Array<T>} arr source array
* @param {(value: T, index: number, array: T[]) => Promise<U>|U} callback callback function (can be sync or async)
* @returns {Promise<Array<U>>}
* @throws {TypeError} getAsyncMap: arr must be an array
* @throws {TypeError} getAsyncMap: callback must be a function
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
* @example
* // How to call API for each element of an array and return a result?
* const myAPIFn = (item, index, arr) => Promise.resolve("success" + item);
* const array = [ 1, 2, 3 ];
* const result = await getAsyncMap(array, myAPIFn);
* console.log(result); // => [ "success1", "success2, "success3" ]
*/const getAsyncMap=async(arr,callback)=>{if(!Array.isArray(arr))return Promise.reject(new TypeError("getAsyncMap: arr must be an array"));if(typeof callback!=="function")return Promise.reject(new TypeError("getAsyncMap: callback must be a function"));return await Promise.all(arr.map((v,i,a)=>Promise.resolve(callback(v,i,a))))};exports.getAsyncMap=getAsyncMap;
//# sourceMappingURL=index.cjs.map