卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

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

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

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

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

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

```javascript

function* showData() {

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

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

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

}

```

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

```javascript

let a showData();

console.log(a);

```

此時(shí)控制臺(tái)會(huì)輸出一個(gè)遍歷器對(duì)象,其內(nèi)部包含了所有yield語(yǔ)句返回的值。

二、調(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()方法時(shí)done屬性都為false,表示還有返回值;而第四次調(diào)用時(shí)done為true,表示已經(jīng)沒(méi)有返回值了。

三、再次打印返回值

此時(shí),我們?cè)俅伪4娌⒋蛴〗Y(jié)果,發(fā)現(xiàn)前三次done屬性仍然為false,而value屬性分別是'第一條數(shù)據(jù)'、'第二條數(shù)據(jù)'和'第三條數(shù)據(jù)'。但是第四次調(diào)用時(shí),done為true,而value為undefined。

四、注意事項(xiàng)

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

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

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

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

結(jié)語(yǔ)

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

標(biāo)簽: