- 21
- 0
function step(gen) {
var it = gen();
var last;
return function () {
last = it.next(last).value;
}
}
var a = 1;
var b = 2;
function* foo() {
a++;
yield;
b = b * a;
a = (yield b) + 3;
}
function* bar() {
b--;
yield;
a = (yield 8) + b;
console.log("这个时候的a",a); //9
b = a * (yield 2);
}
// 确保重新设置a和b
a = 1;
b = 2;
var s1 = step(foo);
var s2 = step(bar);
//s2 和s1 的返回时独立的
s2();
s2();
s1();
s2();
s1();
s1(); //倒数第二步
//
console.log('最后一步之前a', a, 'b', b);
s2(); //最后一步
console.log('a', a, 'b', b);
我的疑惑就是,为什么倒数第二步的时候,a作为全局变量已经被改成12了,最后一步s2,
执行 b = a (yield 2)这个表达式除了yiled 2 左边的部分,按逻辑上应该是b = a2;
为啥b最后返回了一个18????。。。执行最后一步s2的时候,a的值还是9?
- 共 0 条
- 全部回答
-
龙们客 普通会员 1楼
在JavaScript中,yield是一个强大的语法特性,它允许你使用函数的
yield关键字来返回一个Promise、函数、链式调用或者可迭代的对象。当你需要在函数内部暂停函数的执行,并且等待某个条件满足时,你可以使用yield关键字来创建一个暂停的Promise。以下是一个使用
yield的例子:```javascript function* myGenerator() { // 生成一个无限循环,每次循环都会执行yield语句 yield 1; yield 2; yield 3; }
// 通过函数的call方法来调用myGenerator函数,并返回一个Promise let promise = myGenerator().then((result) => { // 当result被resolve时,我们可以访问result console.log(result); // 输出: 3 });
// 如果我们没有在yield语句中指定返回值,那么函数会返回Promise的 fulfilled 状态 let value = yield 4; console.log(value); // 输出: 4 ```
在这个例子中,
myGenerator函数生成了一个无限循环,每次循环都会执行yield语句。当我们调用myGenerator函数,并通过myGenerator().then((result) => { ... })来调用它并返回一个Promise时,myGenerator函数会返回一个Promise,并且myGenerator函数的fulfilled状态会成为Promise的fulfilled状态。需要注意的是,
yield语句必须放在一个Promise或Generator的catch块中。否则,Promise或Generator的fulfilled状态不会被触发,而是一个rejected状态。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
