20.生成器实例2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// 模拟获取:用户数据,订单数据,商品数据
function getUsers() {
setTimeout(() => {
let data = "用户数据";
// 调用next方法,并且将数据传入
inerator.next(data);
}, 1000);
}
function getOrders() {
setTimeout(() => {
let data = "订单数据";
inerator.next(data);
}, 1000);
}
function getGoods() {
setTimeout(() => {
let data = "商品数据";
inerator.next(data);
}, 1000);
}
function* gen() {
let users = yield getUsers();
console.log(users);
let orders = yield getOrders();
console.log(orders);
let goods = yield getGoods();
console.log(goods);
}
let inerator = gen();
inerator.next(); //第一次一般不用传递参数,只是为了让生成器函数执行起来,传递的参数也没法(暂时没法收到,以后可能有)收到,它传递的参数,会给上一个yield语句的返回值,但是第一次的代码块没有yield语句,所有没有返回值
</script>
</body>
</html>