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