Promise对axios多个请求的处理
文章参考
http://es6.ruanyifeng.com/#docs/promise
http://blog.csdn.net/quanquanxiu/article/details/76718468
Promise对象是ES6的内容,我们可以使用babel做一个转换,基本语法如下:
var promise = new Promise(function(resolve, reject) { // ... some code if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } }); //then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。 promise.then(function funcA(comments) { console.log("resolved: ", comments); }, function funcB(err){ console.log("rejected: ", err); });
var promise = new Promise(function(resolve, reject) { throw new Error('test'); }); promise.catch(function(error) { console.log(error); });
多个异步请求全部成功之后处理的业务请求
/** * 传入多个promise的值,当请求成功之后统一反馈,做逻辑处理 * */ allPromise: function(promise1,promise2){ // 将数组对象转为了数组 var userPromise = Array.prototype.slice.apply(arguments); console.dir(userPromise); // 添加断点调试 debugger var promiseObj = new Promise(function(resolve, reject){ axios.all(userPromise).then(axios.spread(function () { resolve(arguments); }),function(){ reject(arguments); }); }); return promiseObj; },
使用案例
// 获取工厂的信息 var getorgInfoPromise = getData.getRestful("getWarehousesByFacotryid", {id: whOrgId}); //拼装查询参数 var queryParam = { status: nodeObj.status, whOrgId: whOrgId } // 根据工厂ID 获取下面的库房信息列表 var getWarehousesByFacotryidPromise = getData.postRestful("searchWarehouseInfo", { pageSize: pageSize, pageNum: current }, queryParam); // 当两个请求同时返回之后触发的事件 getData.allPromise(getorgInfoPromise, getWarehousesByFacotryidPromise).then(function (responseObj) { var getorgInfoPromiseRes = responseObj[0]; var getWarehousesByFacotryidPromiseRes = responseObj[1]; // 状态码为0 表示请求成功 if (getorgInfoPromiseRes.data.resultCode == 0 && getWarehousesByFacotryidPromiseRes.data.resultCode == 0) { var treeInfo = { // 点击仓库类型 type: "org", // 列表信息 listInfo: getWarehousesByFacotryidPromiseRes.data, // 详细信息 detailInfo: getorgInfoPromiseRes.data } that.totalNum = getWarehousesByFacotryidPromiseRes.data.totalNum; that.treeClickAction(treeInfo); } });
相关推荐
nmgxzm00 2020-11-10
xixixi 2020-11-11
88254251 2020-11-01
MarukoMa 2020-09-02
88234852 2020-09-15
陈旭阳 2020-08-31
whynotgonow 2020-08-19
前端开发Kingcean 2020-07-30
whynotgonow 2020-07-29
bowean 2020-07-08
前端开发Kingcean 2020-07-08
88520191 2020-07-05
前端开发Kingcean 2020-06-27
88481456 2020-06-18
whynotgonow 2020-06-16
88520191 2020-06-13
88520191 2020-06-13
89500297 2020-06-13