国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

如何正確使用ES6中的Generator函數(shù)

隨著JavaScript的發(fā)展,異步編程變得越來越重要。在ES6中,引入了一種新的機(jī)制——Generator函數(shù),可以很好地解決這個問題。本文將介紹如何正確使用ES6中的Generator函數(shù),并查看

隨著JavaScript的發(fā)展,異步編程變得越來越重要。在ES6中,引入了一種新的機(jī)制——Generator函數(shù),可以很好地解決這個問題。本文將介紹如何正確使用ES6中的Generator函數(shù),并查看返回值。

一、定義Generator函數(shù)并調(diào)用

在已打開的HBuilder工具中,打開一個js文件,定義一個Generator函數(shù)showData:

```javascript

function* showData() {

yield '第一條數(shù)據(jù)';

yield '第二條數(shù)據(jù)';

yield '第三條數(shù)據(jù)';

}

```

調(diào)用該函數(shù)并將其賦值給變量a,并進(jìn)行打?。?/p>

```javascript

let a showData();

console.log(a);

```

此時控制臺會輸出一個遍歷器對象,其內(nèi)部包含了所有yield語句返回的值。

二、調(diào)用next方法獲取返回值

為了獲取Generator函數(shù)返回的值,我們需要使用next()方法。在上述代碼的基礎(chǔ)上,使用console.log()方法打印四次next()方法的返回值:

```javascript

console.log(());

console.log(());

console.log(());

console.log(());

```

可以發(fā)現(xiàn),前三次調(diào)用next()方法時done屬性都為false,表示還有返回值;而第四次調(diào)用時done為true,表示已經(jīng)沒有返回值了。

三、再次打印返回值

此時,我們再次保存并打印結(jié)果,發(fā)現(xiàn)前三次done屬性仍然為false,而value屬性分別是'第一條數(shù)據(jù)'、'第二條數(shù)據(jù)'和'第三條數(shù)據(jù)'。但是第四次調(diào)用時,done為true,而value為undefined。

四、注意事項(xiàng)

在使用Generator函數(shù)時,需要注意以下幾點(diǎn):

1. 每次調(diào)用next()方法時,如果已經(jīng)到達(dá)最后一個return語句,done屬性會被設(shè)置為true,并且value的值為undefined。

2. 在遍歷生成器時,如果沒有return語句,則默認(rèn)返回undefined。

3. 如果一個生成器函數(shù)調(diào)用了自身,或者調(diào)用了其他生成器函數(shù),那么它們都必須在內(nèi)部調(diào)用yield語句,否則會導(dǎo)致程序死鎖。

結(jié)語

Generator函數(shù)是一種非常強(qiáng)大的異步編程機(jī)制,在正確使用的情況下,可以幫助我們更好地解決異步編程過程中的問題。通過本文的介紹,相信讀者已經(jīng)能夠初步了解如何正確使用Generator函數(shù),并查看其返回值。

標(biāo)簽: