syncbasestore
Version:
Lightweight reactive store with built-in filtering and async state handling
19 lines (18 loc) • 684 B
JavaScript
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;
}