JS 的forEach map和async函式

2021-09-23 22:23:16 字數 1279 閱讀 8689

今天需要在成圖前從資料庫依次獲取各點的資料,結果發現直接用陣列的foreachmap都無效。

**如下:

//伺服器非同步方法總是最後?

configechart=

async()

=>

=this

.state

let options =

await stations.

map(

async

(item,index)

=>)}

)}) console.

log(

'options'

,options)

await

this

.setstate()

}

除錯臺輸出結果如下:

從輸出結果來看,map和foreach會併發執行裡面的await非同步函式,也就是說會把同步任務先執行完,然後再去執行任務佇列裡的非同步任務。

解決方法就是用for函式:

configechart=

async()

=>

=this

.state

let options =

for(

let item of stations))}

console.

log(

'options'

,options)

資料正常獲取:

或者換一種寫法。應用promise.all將所有非同步一起執行

let promises = stations.

map(

async

(item)

=>)}

)})await promise.

all(promises)

console.

log(

'options'

,options)

輸出效果一樣

關於js 中的 foreach map

foreach是ecma5中array新方法中最基本的乙個,就是遍歷,迴圈。例如下面這個例子 1,2 3,4 foreach alert 等同於下面這個for迴圈?1 234vararray 1,2,3,4 for vark 0,length array.length k length k arra...

ES5的 forEach, map 方法的實現

如果瀏覽器不支援foreach,map方法,要我們自己封裝乙個,該怎麼操作呢?1.foreach 1 array.prototype.foreach function fn 5for var i 0 i8 2.map要複雜一點,因為map最後會返回乙個新陣列 1 array.prototype.ma...

jq和js的關係 JS和JQUERY的區別

根據id取元素 js 取到的是乙個dom物件。例 var div document.getelementbyid one jquery 取到的是乙個jquery物件。例 var div one 括號裡面是根據某個東西來找,相當於乙個選擇,如果我們要根據id來找,在樣式表裡的id是用 來表示的,所以在...