Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。
在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。前端开发的时候会在请求到的成功回调函数中继续写函数,长此以往就形成了回调地狱
function load() {
$.ajax({
url: 'xxx.com',
data: 'jsonp',
success: function(res) {
init(res, function(res) {
render(res, function(res) {
// 一层一层又一层
});
});
}
}
}
load();
一层两层还好,但是多起来就无法维护了,无论是开发自己还是同事来维护,都是极其无奈的。。。。。
axios就调用了Promise,所以在请求返回之后可以使用.then和.catch来写成功失败的方法。话不多说,直接看使用方法吧
var upFunc = new Promise(function(resolve, reject) {
此处省略一系列方法,请求。
resolve();
});
upFunc.then(() => {
_this.returnDataFun(); // 在upFunc执行完毕后想要执行的操作
});