创建Promise异步方法 var saveCanvas = function () { this.canvas; this.context; }; saveCanvas.prototype.baseToJPG=function (base,timetype) { var that = this; var p = new Promise(function (resolve,reject) { var _type = timetype ?'forver' : 'one' var _data = 'url_data='+encodeURIComponent(base) + '&time_type=' + encodeURIComponent(_type); var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { var data = xmlHttp.responseText; var data1 = eval("("+data+")"); if(data1.code == "SUCCESS"){ resolve(data1.url); }else{ reject(data1); } } } xmlHttp.open("POST", "url",true); xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlHttp.send(_data); }); return p };
调用
var sc = new saveCanvas();
sc.initcanvs(options.init).then((value)=> { return sc.baseToJPG(value)//转绝对路径时用到 }) .then((value)=> { document.getElementById(options.saveid).src = value }).catch((status)=> { // 如果AJAX失败,获得响应代码 console.log('ERROR: ' + status); })