async/await
同步操做,就是for
循環裏面必須等await返回後纔會執行第二次循環。與then
不一樣的是,then()
只有包裹在裏面的方法裏面纔是異步返回後執行的。因此for
循環外層的return
可能會在異步返回前執行了。async fn(arr){
let arrItem =[]
for(let i=0;i<arr.length;i+=1){
const res = await request()
arrItem.push(res.arrItem)
}
return arrItem
}
複製代碼
調用fn()
的時候可能會返回一個promise
對象,因此還得:promise
fn2(){
fn().then(res=>{
})
}
複製代碼
for
循環裏直接return
跳出執行方法函數若是你想在for/map
循環裏面直接return
方法函數的值,建議你仍是別找了。由於我是實在找不到。for
原本就是一個方法,return
只能返回他所在域的方法。因此仍是推薦使用上面的async/await
。若是是知足條件後退出循環並返回,你能夠給個狀態bash
fn(arr){
let status =false
let item =null
arr.map(item=>{
if(item.id===0){
item = item
status = true;
return false;
}
})
if(status){
return item;
}else{
return false;
}
}
複製代碼
map
裏使用async/await
,個人使用方式是這樣的,測試return
仍是在請求返回前執行了,不知爲什麼,大神能給個解釋嗎?以後解決的話會更新fn(arr){
let arrItem =[]
arr.map(async(item=>{
const res = await request()
arrItem.push(res.arrItem)
})
return arrItem
}
複製代碼