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执行完毕后想要执行的操作 });