|
@@ -1,16 +1,25 @@
|
|
|
import { defineAsyncComponent } from 'vue';
|
|
|
import { Spin } from 'ant-design-vue';
|
|
|
+import { noop } from '/@/utils/index';
|
|
|
+interface Options {
|
|
|
+ size?: 'default' | 'small' | 'large';
|
|
|
+ delay?: number;
|
|
|
+ timeout?: number;
|
|
|
+ loading?: boolean;
|
|
|
+ retry?: boolean;
|
|
|
+}
|
|
|
|
|
|
-export function createAsyncComponent(loader: any) {
|
|
|
+export function createAsyncComponent(loader: Fn, options: Options = {}) {
|
|
|
+ const { size = 'small', delay = 100, timeout = 3000, loading = true, retry = true } = options;
|
|
|
return defineAsyncComponent({
|
|
|
- loader: loader,
|
|
|
- loadingComponent: <Spin spinning={true} />,
|
|
|
+ loader,
|
|
|
+ loadingComponent: loading ? <Spin spinning={true} size={size} /> : undefined,
|
|
|
// The error component will be displayed if a timeout is
|
|
|
// provided and exceeded. Default: Infinity.
|
|
|
- timeout: 3000,
|
|
|
+ timeout,
|
|
|
// Defining if component is suspensible. Default: true.
|
|
|
// suspensible: false,
|
|
|
- delay: 100,
|
|
|
+ delay,
|
|
|
/**
|
|
|
*
|
|
|
* @param {*} error Error message object
|
|
@@ -18,15 +27,17 @@ export function createAsyncComponent(loader: any) {
|
|
|
* @param {*} fail End of failure
|
|
|
* @param {*} attempts Maximum allowed retries number
|
|
|
*/
|
|
|
- onError(error, retry, fail, attempts) {
|
|
|
- if (error.message.match(/fetch/) && attempts <= 3) {
|
|
|
- // retry on fetch errors, 3 max attempts
|
|
|
- retry();
|
|
|
- } else {
|
|
|
- // Note that retry/fail are like resolve/reject of a promise:
|
|
|
- // one of them must be called for the error handling to continue.
|
|
|
- fail();
|
|
|
- }
|
|
|
- },
|
|
|
+ onError: !retry
|
|
|
+ ? noop
|
|
|
+ : (error, retry, fail, attempts) => {
|
|
|
+ if (error.message.match(/fetch/) && attempts <= 3) {
|
|
|
+ // retry on fetch errors, 3 max attempts
|
|
|
+ retry();
|
|
|
+ } else {
|
|
|
+ // Note that retry/fail are like resolve/reject of a promise:
|
|
|
+ // one of them must be called for the error handling to continue.
|
|
|
+ fail();
|
|
|
+ }
|
|
|
+ },
|
|
|
});
|
|
|
}
|