mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
33 lines
676 B
TypeScript
33 lines
676 B
TypeScript
import { isPromise, noop } from '.';
|
|
|
|
export function callInterceptor(options: {
|
|
interceptor?: (...args: any[]) => Promise<boolean> | boolean;
|
|
args: any[];
|
|
done: () => void;
|
|
canceled?: () => void;
|
|
}) {
|
|
const { interceptor, args, done, canceled } = options;
|
|
|
|
if (interceptor) {
|
|
const returnVal = interceptor(...args);
|
|
|
|
if (isPromise(returnVal)) {
|
|
returnVal
|
|
.then((value) => {
|
|
if (value) {
|
|
done();
|
|
} else if (canceled) {
|
|
canceled();
|
|
}
|
|
})
|
|
.catch(noop);
|
|
} else if (returnVal) {
|
|
done();
|
|
} else if (canceled) {
|
|
canceled();
|
|
}
|
|
} else {
|
|
done();
|
|
}
|
|
}
|