Skip to content

Instantly share code, notes, and snippets.

@lumixraku
Created June 5, 2020 03:34
Show Gist options
  • Save lumixraku/258d12268ad1e9c592505ca42c44a019 to your computer and use it in GitHub Desktop.
Save lumixraku/258d12268ad1e9c592505ca42c44a019 to your computer and use it in GitHub Desktop.
class Http {
public static Inst(): Http {
if (null == Http._inst) {
Http._inst = new Http();
}
return Http._inst;
}
private static _inst: Http;
public constructor() {
}
private token: string;
public static Get<T>(url: string, params?: any): Promise<T> {
return new Promise<T>((resolve, reject) => {
let onLoadComplete = (event: egret.Event): void => {
let loader: egret.URLLoader = <egret.URLLoader>event.target;
egret.log("dataFormat : " + loader.dataFormat);
//获取加载到的对象
let resp: T = JSON.parse(loader.data);
egret.log("resp : " + resp);
resolve(resp)
}
let onIOError = (err) => {
reject(err);
}
let loader: egret.URLLoader = new egret.URLLoader();
loader.dataFormat = egret.URLLoaderDataFormat.TEXT
loader.addEventListener(egret.Event.COMPLETE, onLoadComplete, this);
loader.addEventListener(egret.IOErrorEvent.IO_ERROR, onIOError, this);
let request: egret.URLRequest = new egret.URLRequest(url);
//开始加载
loader.load(request);
})
}
public static Post<T>(url: string, params?: any): Promise<T> {
var request = new egret.HttpRequest();
request.responseType = egret.HttpResponseType.TEXT;
var finalUrl = url;
var query = ""
if (null != params) {
query += Object.keys(params)
.map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
.join('&')
}
finalUrl = "" == query ? url : url + "?" + query
return new Promise<T>((resolve, reject) => {
request.open(finalUrl, "POST");
let onLoadCompleteFN = (event: egret.Event) => {
let request:egret.HttpRequest = <egret.HttpRequest>event.currentTarget;
let resp:T = JSON.parse(request.response)
resolve(resp)
}
let onIOError = (err) => {
reject(err);
}
request.addEventListener(egret.Event.COMPLETE, onLoadCompleteFN, null);
request.addEventListener(egret.IOErrorEvent.IO_ERROR, onIOError, this);
request.addEventListener(egret.ProgressEvent.PROGRESS, Http.onGetProgress, this);
request.send();
})
}
static onGetIOError(event: egret.IOErrorEvent): void {
console.log("get error : " + event);
}
static onGetProgress(event: egret.ProgressEvent): void {
// console.log("get progress : " + Math.floor(100 * event.bytesLoaded / event.bytesTotal) + "%");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment