使用forEach循环异步函数时,会先整个循环一遍,然后再输出异步函数的结果,这样就没法在循环结束后拿到异步函数的结果,正确的写法应该是用递归方法,等待异步函数执行完毕后才进入下一次循环。下面是两种写法的执行结果。
实现方法很简单,将总数计算出来显示到title,title显示位置调整到饼图中间,设置zlevel属性置于底层;鼠标悬停时显示的label也显示在饼图中间,调整背景色及边距, 设置zlevel属性 置于title上方,鼠标悬停时显示label就会遮挡住title。
promise实例
let $http = {
post:function(url,params){
let promise = new Promise(function(resolve, reject){
$.ajax({
url:url,
method:'post',
data:params?params:null,
complete:function(res){
if(this.status === 200 || this.status === 304) {
resolve(res);
} else {
reject(new Error(this.statusText));
}
}
});
});
return promise;
}
};
调用:
$http.post('http://url.com').then((res)=>{
if(res.success==true) {
console.success(res;
}
})
.catch((err)=>{
console.error(err);
});