項目中遇到一個問題,要用多個http請求,獲取數據,然后將獲取的數據統一處理…
第一反應想到用promise.all來做… 下面進入主體
// 首先使用promise封裝http請求.
function getListByDetecttype (params) {return new Promise((resolve, reject) => {let param = params ? param : ' ';let url = YOURURL$.post(url, param).then(function (res){res = JSON.parse(res);if(res.result && res.code === 200) {resolve(res);} else {console.log(err);}})})
}
// 根據參數驅動,獲取__PROMISE__數組
// 比如說,您的參數放在數組 __PARAMS__里面
for(let i =0; i < __PARAMS__.length; i++) {__PROMISE__[i] = getListByDetecttype(__PARAMS__[i]);
}
// 使用Promise.all等待promise全部執行
Promise.all(__PROMISE__).then(function(values){// 拿到數據后便可以為所欲為了...console.log(values);
});
注:
- Promise.all不能保證異步的執行順序
- 上面代碼使用了jquery的$.post()使用需先導入jquery