遍歷器(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,是否非同步請...