@segment/analytics-generic-utils
Version:
This monorepo's version of "lodash". This package contains shared generic utilities that can be used within the ecosystem. This package should not have dependencies, and should not contain any references to the Analytics domain.
26 lines (24 loc) • 519 B
text/typescript
/**
* Return a promise that can be externally resolved
*/
export const createDeferred = <T>() => {
let resolve!: (value: T | PromiseLike<T>) => void
let reject!: (reason: any) => void
let settled = false
const promise = new Promise<T>((_resolve, _reject) => {
resolve = (...args) => {
settled = true
_resolve(...args)
}
reject = (...args) => {
settled = true
_reject(...args)
}
})
return {
resolve,
reject,
promise,
isSettled: () => settled,
}
}