drunk.util

drunk的工具方法模块。

  • drunk.util.ajax(options: drunk.util.IAjaxOptions): Promise<any>

    发送XMLHttpRequest

    interface IAjaxOptions {
      url: string;                            /** 请求的url */
      type?: string;                          /** 请求的类型(GET|POST|PUT|DELETE等) */
      data?: string | Object;                 /** 要发送的数据 */
      headers?: { [index: string]: string };  /** 请求头配置 */
      withCredentials?: boolean;              /** withCredentials快捷配置 */
      contentType?: string;                   /** 请求的content-type */
      responseType?: string;                  /** 相应的数据类型 */
      timeout?: number;                       /** 请求超时时间 */
      user?: string;
      password?: string;
    }
    
    // GET
    drunk.util.ajax({
      url: 'http://example.com/data/data.json',
      type: 'GET',
      responseType: 'json'
    }).then(res => {
      console.log(res);
    });
    
    // POST
    drunk.util.ajax({
      url: 'http://example.com/user/update',
      type: 'POST',
      contentType: 'application/json',
      responseType: 'json',
      data: {
        usname: 'Todd',
        gender: 'male'
      }
    }).then(res => {
    
    }).catch(err: {res: any, xhr: XMLHttpRequest} => {
      console.log(err.res);
      console.log(err.xhr.status);
    });
    
  • drunk.util.uniqueId(target: any): number

    获取对象的唯一ID

    var obj = {};
    drunk.util.uniqueId(obj);
    
  • drunk.util.extend(destination: any, ...sources: any[]): any

    拓展对象

    var obj = {a: 1, b: 2};
    var newObj = drunk.util.extend({c: 3}, obj);
    console.log(newObj); // {c: 3, a: 1, b: 2}
    
  • drunk.util.deepClone(target: any): any

    深度拷贝对象

    drunk.util.deepClone(123); // 123
    drunk.util.deepClone('123'); // '123'
    
    var arr1 = [1, 2, 3];
    var arr2 = drunk.util.deepClone(arr1);
    conosle.log(arr1 == arr2); // false
    
    var obj1 = {arr: [1, 2]};
    var obj2 = drunk.util.deepClone(obj1);
    console.log(obj1 == obj2, obj1.arr == obj2.arr); // false, false
    
  • drunk.util.toArray(arrayLike: any): any[]

    转化为数组

    drunk.util.toArray(document.querySelectorAll('div')).forEach(element => {
    
    });
    
  • drunk.util.addArrayItem(array: any[], item: any): void

    添加唯一的数组元素,如果数组中已经存在不会再添加

    var arr = [1, 2];
    drunk.util.addArrayItem(arr, 3); // [1, 2, 3]
    drunk.util.addArrayItem(arr, 1); // [1, 2, 3]
    
    var obj = {a: 1};
    drunk.util.addArrayItem(arr, obj); // [1, 2, 3, {a: 1}]
    drunk.util.addArrayItem(arr, obj); // [1, 2, 3, {a: 1}]
    
  • drunk.util.removeArrayItem(array: any[], item: any): void

    如果元素再数组中存在,则从数组中移除

    var arr = [1, 2, 3];
    drunk.util.removeArrayItem(2); // [1, 3]
    
  • drunk.util.execAsyncWork(work: () => any, context?: any): drunk.util.IAsyncJob

    执行一个异步任务

    interface IAsyncJob {
      completed: boolean; // 是否完成
      cancel(): void; // 取消执行
    }
    
    drunk.util.execAsyncWork(() => {
      console.log(2);
    });
    console.log(1);
    // 1
    // 2
    
    var job = drunk.util.execAsyncWork(() => {
      console.log('永远不会执行');
    });
    if (!job.completed) {
      job.cancel();
    }
    
  • drunk.util.requestAnimationFrame(callback: FrameRequestCallback): number

    requestAnimationFrame函数的兼容方法

  • drunk.util.cancelAnimationFrame(handle: number): void

    cancelAnimationFrame函数的兼容方法

results matching ""

    No results matching ""