· 5 years ago · Oct 09, 2020, 11:28 AM
1class API {
2 constructor(axios) {
3 this.axios = axios;
4 this.payload = [];
5 this.query = [];
6 }
7 add(method, params = {}, id = null) {
8 if (id && typeof id === 'object') id = id.id;
9 return new Promise((resolve, reject) => {
10 this.payload.push({
11 method,
12 params,
13 id,
14 });
15 this.query.push({ resolve, reject });
16 });
17 }
18 serial(array) {
19 array.forEach((item) => this.add(item));
20 }
21 get(method, params = {}, id = null) {
22 let promise = this.add(method, params, id);
23 this.post();
24 return promise;
25 }
26 post() {
27 return this.payload.length
28 ? this.axios.post('/', this.payload).then((response) => {
29 this.payload.splice(0);
30 this.query.forEach((promise, key) => {
31 if (response.data[key].result) {
32 promise.resolve(response.data[key].result);
33 }
34 if (response.data[key].error) {
35 promise.reject(response.data[key].error);
36 }
37 });
38 this.query.splice(0);
39 })
40 : new Promise((resolve) => resolve());
41 }
42}
43export default (axios) => new API(axios);
44