for循環(huán)請求數(shù)據(jù)接口,for循環(huán)出不同的值,作為請求接口的參數(shù)。這種請情況怎么處理?否則接口還沒請求完成,for循環(huán)就已經(jīng)執(zhí)行完了
關(guān)于對異步處理的理解,可以參考從小小題目逐步走進(jìn) JavaScript 異步調(diào)用
// 如果你用 node 的話,可以用 util.promisify 來封裝 node 回調(diào)風(fēng)格調(diào)用
// 或者就自己寫一個
function updateTaskLastMile(...args) {
return new Promise((resolve, reject) => {
taskMainRepo.updatetasklastmile(...args, (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
async function main() {
const bb = [];
const promises = bb.map(b => updateTaskLastMile(b));
// 這個 aa 就是你想要的
const aa = await Promise.all(promises);
}
但是上面這個 main 必須要每個 bb 的調(diào)用都成功才會返回也就是說,對于 Promise.all,如果有一個失敗,必定全部失敗。那么可以這樣改寫(參閱從不用 try-catch 實現(xiàn)的 async/await 語法說錯誤處理):
async function main() {
const bb = [];
// 注意這里加的 .catch
const promises = bb.map(b => updateTaskLastMile(b).catch(err => false));
// 這個 aa 就是你想要的
const aa = await Promise.all(promises);
}
這樣,如果有調(diào)用失敗,aa 中對應(yīng)的元素就是 false,當(dāng)然你也可以使用其它容易識別的值,比如 null、undefined 或者某個特殊值,甚至可以干脆對返回值進(jìn)行一次封裝
const promises = bb
.map(b => updateTaskLastMile(b)
.then(data => ({ data }), err => ({ err })));
這樣,aa 中的每個元素都是一個對象,要么有 data 屬性,要么有 err 屬性……
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。