|
@@ -1,18 +1,48 @@
|
|
-export const testData = [
|
|
|
|
- {
|
|
|
|
- id: 1,
|
|
|
|
- title: "枫林的二三事",
|
|
|
|
- date: "2023-10-01",
|
|
|
|
- type: ["日志"],
|
|
|
|
- description: "枫林古镇始建北宋崇宁五年,是位于浙江省的省级历史文化名镇,建筑按“九天七星” 布局。\n枫林古镇不仅历史悠久,人文荟萃,而且景点众多,镇内纪念性、观赏性的古建筑有:孝子亭、坐爱亭、芙蓉亭、光曜亭、廿四平亭、圣旨门、衙门前门台、念祖桥、御史祠。去枫林古镇,就不能不去北坑龙潭。",
|
|
|
|
- author: "机芯"
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 2,
|
|
|
|
- title: "枫林的二三事",
|
|
|
|
- date: "2023-10-01",
|
|
|
|
- type: ["日志"],
|
|
|
|
- description: "枫林古镇始建北宋崇宁五年,是位于浙江省的省级历史文化名镇,建筑按“九天七星” 布局。\n枫林古镇不仅历史悠久,人文荟萃,而且景点众多,镇内纪念性、观赏性的古建筑有:孝子亭、坐爱亭、芙蓉亭、光曜亭、廿四平亭、圣旨门、衙门前门台、念祖桥、御史祠。去枫林古镇,就不能不去北坑龙潭。",
|
|
|
|
- author: "机芯"
|
|
|
|
- }
|
|
|
|
-]
|
|
|
|
|
|
+import axios from "axios";
|
|
|
|
+
|
|
|
|
+const baseServer = axios.create({
|
|
|
|
+ baseURL: 'http://8.130.126.103:3000/'
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+interface LazyItem<T> {
|
|
|
|
+ get(hard?: boolean): Promise<T>;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+export function lazyItem<T, R = T>(url: string, defaultValue: T, middleware: ((base: R) => T) | null = null): LazyItem<T> {
|
|
|
|
+
|
|
|
|
+ let value = defaultValue;
|
|
|
|
+ let available = false;
|
|
|
|
+ let promiseInstance: Promise<T> | null = null;
|
|
|
|
+
|
|
|
|
+ function get(hard = false) {
|
|
|
|
+
|
|
|
|
+ if (hard) {
|
|
|
|
+ promiseInstance = null;
|
|
|
|
+ available = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!promiseInstance) {
|
|
|
|
+ promiseInstance = new Promise((resolve, reject) => {
|
|
|
|
+ if (available) {
|
|
|
|
+ resolve(value);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ baseServer.get(url)
|
|
|
|
+ .then(response => {
|
|
|
|
+ value = middleware ? middleware(response.data) : response.data;
|
|
|
|
+ available = true;
|
|
|
|
+ resolve(value);
|
|
|
|
+ })
|
|
|
|
+ .catch(err => {
|
|
|
|
+ promiseInstance = null;
|
|
|
|
+ reject(err);
|
|
|
|
+ });
|
|
|
|
+ }) as Promise<T>;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return promiseInstance;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return {get};
|
|
|
|
+}
|