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, falsedrunk.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): numberrequestAnimationFrame函数的兼容方法
drunk.util.cancelAnimationFrame(handle: number): voidcancelAnimationFrame函数的兼容方法