nutui-uniapp
Version:
京东风格的轻量级移动端 Uniapp、Vue3 组件库(支持小程序开发)
38 lines (34 loc) • 720 B
text/typescript
import { isPromise } from './is'
export type Interceptor = (...args: any[]) => Promise<boolean> | boolean | undefined | void
export function funInterceptor(interceptor: Interceptor | undefined, {
args = [],
done,
canceled,
}: {
args?: unknown[]
done: (val?: any) => void
canceled?: () => void
}) {
if (interceptor) {
const returnVal = interceptor(null, ...args)
if (isPromise(returnVal)) {
returnVal
.then((value) => {
if (value)
done(value)
else if (canceled)
canceled()
})
.catch(() => {})
}
else if (returnVal) {
done()
}
else if (canceled) {
canceled()
}
}
else {
done()
}
}