非同步遍歷器

2021-10-20 19:35:20 字數 1387 閱讀 6430

遍歷器(iterator)的next方法必須是同步的,就是說只要呼叫就必須立刻返回值,即一旦執行了next方法,就必須同步的得到value和done兩個屬性。

目前非同步遍歷器的解決方案就是value屬性是個thunk函式或者promise物件,等待以後返回真正的值,而done屬性還是同步產生。

非同步遍歷器最大的特點就是返回乙個promise物件。

遍歷器的介面部署在symbol.iterator屬性上,物件的非同步遍歷器介面部署在symbol.asynciterator屬性上。

var obj =;}

};},

//非同步iterator

[symbol.asynciterator]()

);}}

;},}

let b = obj[symbol.iterator]()

;console.

log(b.

next()

);console.

log(b.

next()

);console.

log(b.

next()

);let a = obj[symbol.asynciterator]()

;console.

log(a.

next()

);console.

log(a.

next()

);console.

log(a.

next()

);

結果如下所示:

非同步遍歷器返回的是乙個promise物件,儲存在promise物件的[promiseresult]中。

for await …of用於非同步遍歷器, 只能用在async函式中,不然會報錯。用法與 for…of 相同。

var obj =);

}};}

,}async

functionf(

)}f(

);

就像generator函式返回乙個同步遍歷器物件一樣,非同步generator函式的作用是返回乙個非同步遍歷器物件。

async

function

*gen()

const g =

gen();

gen.

next()

.then

( x => console.

log(x));

//

ajax非同步請求, each遍歷拼接資料

自己在做乙個前後端分離的demo,現在需要用ajax非同步請求後端資料,然後用jquery的 each遍歷,然後拼接資料。自己查閱資料,找到了乙個很好的例子,按照自己的需求先用data.json來進行測試,測試成功了,稍作修改拿到我的前端 上可以拿到資料了!雖然對大家來說,這是個基本操作,但我前端知...

迭代器遍歷

iterator物件稱為迭代器,主要用於遍歷collection 集合中的元素。所有實現了collection介面的集合類都有乙個iterator 方法,用以返回乙個實現了lterator介面的物件,即可以返回乙個迭代器。lterator的結構.iterator僅用於遍歷集合,iterator本身並...

非同步訪問伺服器

非同步訪問伺服器進行校驗時由於語句順序問題出現了錯誤,修改之前錯誤顯示 錯誤順序 ajax url goods userservlet success function flag 正確順序 ajax 給伺服器的引數 type post datatype json async false,是否非同步請...