如何使用ES6中的方法控制字符串執(zhí)行順序
ES6中引入了許多新特性,其中包括一些操作異步的方式。在這些方式中,Generator函數(shù)中的yield表達(dá)式可以用于暫停執(zhí)行,而next()方法則可以用于繼續(xù)執(zhí)行。下面通過實(shí)例來說明如何使用這些方法
ES6中引入了許多新特性,其中包括一些操作異步的方式。在這些方式中,Generator函數(shù)中的yield表達(dá)式可以用于暫停執(zhí)行,而next()方法則可以用于繼續(xù)執(zhí)行。下面通過實(shí)例來說明如何使用這些方法。
定義并調(diào)用sayHi函數(shù)
首先,在已經(jīng)創(chuàng)建好的JavaScript文件中,定義一個(gè)名為sayHi的函數(shù),并在其中使用yield表達(dá)式,并返回一個(gè)值。代碼示例如下:
function* sayHi() {
yield 'H';
yield 'e';
yield 'l';
yield 'l';
yield 'o';
}
接著,我們可以通過調(diào)用該函數(shù)并賦值給一個(gè)變量sh,然后使用next()方法調(diào)用五次,并打印對(duì)應(yīng)的結(jié)果。代碼示例如下:
let sh sayHi();
console.log(()); // {value: "H", done: false}
console.log(()); // {value: "e", done: false}
console.log(()); // {value: "l", done: false}
console.log(()); // {value: "l", done: false}
console.log(()); // {value: "o", done: false}
在保存代碼并打開瀏覽器查看結(jié)果時(shí),可以發(fā)現(xiàn)前三次打印對(duì)應(yīng)的字符,done的值為false;第四次返回的value為undefined,done的值為true;第五次的value為undefined,done的值也為true。
定義并調(diào)用computeSum函數(shù)
接下來,我們可以使用同樣的方法來定義一個(gè)名為computeSum的函數(shù),并在其中利用if語句和三目表達(dá)式返回一個(gè)計(jì)算表達(dá)式的結(jié)果。代碼示例如下:
function* computeSum(flag) {
let a 1;
let b 2;
if (flag) {
yield a b;
} else {
yield a - b;
}
}
然后,我們可以將該函數(shù)賦值給一個(gè)變量cs,并使用next()方法調(diào)用四次,并打印對(duì)應(yīng)的結(jié)果。代碼示例如下:
let cs computeSum(true);
console.log(()); // {value: 3, done: false}
console.log(()); // {value: undefined, done: true}
console.log(()); // {value: undefined, done: true}
console.log(()); // {value: undefined, done: true}
當(dāng)預(yù)覽頁面結(jié)果時(shí),可能會(huì)發(fā)現(xiàn)出現(xiàn)報(bào)錯(cuò)。這是因?yàn)樵诤瘮?shù)中需要傳入一個(gè)參數(shù)flag。