yield有點像是return,是ES6開始提供的功能,return會結束工作,回到呼叫端,而yeild是暫停當下的工作,回到呼叫端。
function add1(i,j){
return i + j;
}
function* add1(i,j){
yield i + j;
}
function加上星號,function*
指的是Generator產生器函式物件,在產生器函式中才能使用yield。
產生器函式物件有實作iterator是可迭代物件,有提供next()方法取得內容並可以用for...of進行跌代。
for...of每次迭代會呼叫next()方法,取得yield的指定值,一直迭代到出現done為true為止
function* show(){
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
}