首頁  >  文章  >  web前端  >  es6中generator的用法是什麼

es6中generator的用法是什麼

WBOY
WBOY原創
2022-05-05 14:51:322134瀏覽

在es6中,generator用於封裝非同步任務,是一個非同步任務的容器,可以讓函數按照指定的時間執行或暫停;定義該函數時在function關鍵字和函數名之間有一個星號(*),語法為「function *name(){..yield..}」。

es6中generator的用法是什麼

本教學操作環境:windows10系統、ECMAScript 6.0版、Dell G3電腦。

es6中generator的用法是什麼

Generator主要是非同步編程,用來封裝非同步任務,是一個非同步任務的容器,可以讓函數按照我們指定的時候執行或暫停。

定義一個Generator函數和定義一個普通函數的差異在於:

function關鍵字和函數名稱之間有一個 *(星號)。

函數內部使用yield來定義每個函數內部的狀態。

如果函數內部有return語句,那麼他就是函數內部的最後一個狀態。

使用語法:

function *name(){
...
yield; //需要暂停的时候加yield
...
yield;
...
}
const p = name();
p.next() //调用函数,执行到第一个yield处停止
p.next() //从上一个yeild开始执行,到下一个yield处为止

來看一個簡單的例子:

// 定义
function* sayHello() {
  yield 'hello';
  yield 'world';
  return 'ending';
}
// 调用
// 注意,hw获取到的值是一个遍历器对象
let g = sayHello();

上面的例子,定義了一個名為sayHello的Generator函數,它內部有兩個yield表達式和一個return表達式。所以,函數內部有三個狀態:hello,world 和 return語句(結束執行)。最後,呼叫這個函數,得到一個遍歷器物件並賦值給變數g。

Generator函數的呼叫方法與普通函數完全一樣,函數名稱()。不同的是:

  • 函數呼叫後,內部程式碼(從第一行開始)都不會立即執行。

  • 函數呼叫後會有一個回傳值,這個值是指向內部狀態的指針對象,實質就是一個包含函數內部狀態的遍歷器物件。

【相關推薦:javascript影片教學web前端

#

以上是es6中generator的用法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn