概念:封装各种状态,提供异步编程的解决方案,通常一个函数里面只能return返回一个,但通过yield可以返回多个值
特征:
function* 函数名(){
yield 表达式
}
1.*星号位置建议紧跟function关键字
2.函数内部使用yield表达式
一:语法
function* hello(){
yield "hello";
yield "world";
return "hh"
}
const hw=hello();
console.log(hw.next()) //{value:"hello",done:false}
console.log(hw.next()) //{value:"world",done:false}
console.log(hw.next()) //{value:"hh",done:true}
console.log(hw.next())//{value:undefined,done:true}
结果:调用函数后,函数不会执行(无论是否使用了yield表达式),返回结果也不是函数运行结果,返回值为迭代器对象
使用.next()方法输出结果 {value:“yield表达式后的值”,done:true或false}
1.遇到yield表达式,暂停执行后面代码,并将紧跟着该yield表达式的值作为返回对象value的属性值
2.遇到return语句停止,并将return语句后面的表达式的值,作为返回对象value的属性值,done的属性值为true
3.若执行到最后一句无return,则输出{value:undefined,done:true}
二:yield表达式
1.yield表达式是暂停标志,只能存在于generator中
语法:yield:表达式
当执行时表达式会作为返回对象的属性value的值