生成器函数
语法
function* 函数名(参数){函数体}
案例:先得到用户,然后根据用户得到订单,根据订单得到商品信息
话不多说,拿代码,运行,看结果:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>生成器函数</title>
</head>
<body>
<script type="text/javascript">
function getUser() {
setTimeout(() => {
let data = "用户信息"
// next()方法时,如果传入了参数,那么这个参数会作为上一条直线的yield语句的返回值
iterator.next(data)
}, 1000)
}
function getOrder() {
setTimeout(() => {
let data = "订单信息"
iterator.next(data)
}, 2000)
}
function getGood() {
setTimeout(() => {
let data = "商品信息"
iterator.next(data)
}, 3000)
}
// 使用yield关键字可以暂停函数
function * gen() {
let user = yield getUser()
console.log(user)
let order=yield getOrder()
console.log(order)
let good=yield getGood()
console.log(good)
}
let iterator=gen()
iterator.next()
</script>
</body>
</html>