12 Generator及其非同步方面的應用

2021-10-10 23:32:39 字數 565 閱讀 1911

基本概念:

generator函式是es6提供的一種非同步程式設計解決方案,語法行為與傳統函式完全不同。generator函式有多種理解角度。語法上,首先可以把它理解成,generator函式是乙個狀態機,封裝了多個內部狀態。

執行generator函式會返回乙個遍歷器物件,也就是說,generator函式除了狀態機,還是乙個遍歷器物件生成函式。返回的遍歷器物件,可以依次遍歷generator函式內部的每乙個狀態。

形式上,generator函式是乙個普通函式,但是有兩個特徵。一是,function關鍵字與函式名之間有乙個星號;二是,函式體內部使用yield表示式,定義不同的內部狀態(yield在英語裡的意思就是產出)。

乙個應用例項:

function

*sendxml()

function

getnews

(url))}

let sx =

sendxml()

;// 傳送請求獲取新聞內容

sx.next()

;

非同步解決之Generator

generator 1 生成方式 function fn1 fn1.next 使用傳遞引數 fn1.next name qiang 這個引數上傳給上乙個yiel關鍵字的返回值。實戰!function initdata let gen initdata gen.next value.then res ...

JS非同步程式設計之Generator

前言 es6 中提出乙個叫生成器 generator 的概念,執行生成器函式,會返回迭代器物件 iterator 這個迭代器物件可以遍歷函式內部的每乙個狀態。function helloworldgenerator 通過執行生成器返回迭代器物件 var helloworlditerator hell...

使用Generator函式進行非同步程式設計

generator函式在工作中還沒有用到過,一直在使用async,最近在看async的原理,發現它只是generator的語法糖。generator的基礎知識之前寫過文章介紹過 這裡主要討論一下怎麼使用generator函式來進行非同步程式設計。先來看下面的 1 function g 6 const...