const tagInfo = '[/libs/model/demo.js]：';
import axios from '@/libs/net/axios'
import to from 'await-to-js';
import urls from '@/libs/net/urls'


/**
 * 模型通过单例模式实现，不要直接实例化，要么调用静态方法，要么通过 getInstance()获取引用
 */
class Demo {
  // ES6类的静态方法（只能直接由类名调用的方法）：static getInstance
  // ES6类的静态属性：直接挂载在类名上的方法，如：Db.instance()
  static instance;
  initFinish = false;
  //=======================基础方法====================
  /**
   * 获取列表方法（具体参数返回，可根据实际业务修改）
   * @returns 
   */
  async getList () {
    let url = urls.demoIndex;
    let param = {};

    let [err, res] = await to(axios.post(url, param));
    if (err) {
      return err;
    }
    return res;
  }


  //= ===================数据计算=======================

  //= ===================END 数据计算========================

  //= ====================私有方法=====================

  /**
   * 
   * @returns 获取引用
   */
  static getInstance () {
    if (!Demo.instance) {
      Demo.instance = new Demo();
      return Demo.instance;
    }
    return Demo.instance;
  }

  /**
   * 构造函数
   */
  constructor() {
    this.init();
  }

  /**
   * 类实例初始化
   */
  async init () {
    console.log(tagInfo + '初始化');
    this.initFinish = false;
    //如果有初始化业务，就写在这里
    this.initFinish = true;
    console.log(tagInfo + '初始化完成');
  }
  //= ====================END 私有方法=====================

}
export default Demo;