es6 yield用法
ES6中新增了yield关键字,它可以将函数执行暂时挂起,同时将函数执行的控制权交给调用者,直到被再次调用时继续执行。
yield的基本语法如下:
function* foo() {
yield 1;
yield 2;
yield 3;
}
调用foo()并不会执行函数体,而是返回一个generator对象。可以通过next()方法来依次执行yield后面的表达式。
let generator = foo();
(()); // {done: false, value: 1}
(()); // {done: false, value: 2}
(()); // {done: false, value: 3}
(()); // {done: true, value:
undefined}
其中,done属性表示是否执行完毕,value属性表示yield后面的表达式的值。
除此之外,yield还可以在函数内部进行双向传值。generator对象的next()方法可以接受一个参数,将这个参数作为yield表达式的返回值。yield表达式的值可以通过next()方法的返回值获取。
- 1 -
function* bar() {
let x = yield 'foo';
(x);
let y = yield 'bar';
(y);
}
let generator = bar();
(()); // {done: false, value:
'foo'}
(('hello')); // hello {done:
false, value: 'bar'}
(('world')); // world {done:
true, value: undefined}
在此例中,第一个next()方法并没有传入参数,所以第一个yield表达式的返回值为'foo'。第二个next()方法传入了'hello'作为参数,此时x的值为'hello',并输出'hello'。依次类推,第三个next()方法传入了'world'作为参数,此时y的值为'world',并输出'world'。最终执行完毕,done为true,value为undefined。
yield的使用场景不止于此,它可以用于将一个耗时的操作分割成多个步骤进行处理,也可以用于实现异步编程。在实际开发中,可以根据具体情况灵活运用。
- 2 -
本文发布于:2024-09-23 18:24:44,感谢您对本站的认可!
本文链接:https://www.17tex.com/fanyi/13691.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |