今天需要在成圖前從資料庫依次獲取各點的資料,結果發現直接用陣列的foreach
和map
都無效。
**如下:
//伺服器非同步方法總是最後?
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是用 來表示的,所以在...