UNPKG

syncbasestore

Version:

Lightweight reactive store with built-in filtering and async state handling

19 lines (18 loc) 684 B
export async function syncMerge(promise1, promise2, options) { const { waitMs = 0, mergeFn, keepStore = false, target } = options || {}; if (keepStore && !target) { throw new Error(`'keepStore' is true, but 'target' (setter function) is not provided.`); } const [data1, data2] = await Promise.all([promise1, promise2]); if (waitMs > 0) { await new Promise((res) => setTimeout(res, waitMs)); } const result = mergeFn ? mergeFn(data1, data2) : undefined; const finalResult = mergeFn ? { data1, data2, result } : { data1, data2 }; if (keepStore && target) { target(finalResult); } return finalResult; }