c语言sscanf函数的用法是什么
224
2022-09-06
ES6新特性③
文章目录
生成器
生成器函数的参数生成器函数示例
生成器
生成器函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同 语法:
function * gen(){ yield '一只没有耳朵'; console.log(222); yield '一只没有尾巴'; yield '真奇怪';}let iterator = gen();console.log(iterator.next()); //一只没有耳朵 console.log(iterator.next()); // 先打印222 再返回一只没有尾巴console.log(iterator.next()); //真奇怪
代码说明:
* 的位置没有限制生成器函数返回的结果是迭代器对象,调用迭代器对象的 next 方法返回的是yield 语句后的值yield 相当于函数的暂停标记,也可以认为是函数的分隔符,每调用一次 next方法,执行一段代码(到yield截至)next 方法可以传递实参,作为 上一个 yield 语句的返回值
生成器函数的参数
生成器函数示例
示例一:1s 后控制台输出 111 2s后输出 222 3s后输出 333(总时长6秒) 如果使用回调函数:
setTimeout(() => { console.log(111); setTimeout(() => { console.log(222); setTimeout(() => { console.log(333); }, 3000); }, 2000); }, 1000);
如果回调的函数增多则会很麻烦,代码结构很凌乱。
而使用生成器:
function one(){ setTimeout(()=>{ console.log(111); iterator.next(); },1000) } function two(){ setTimeout(()=>{ console.log(222); iterator.next(); },2000) } function three(){ setTimeout(()=>{ console.log(333); iterator.next(); },3000) } function * gen(){ yield one(); yield two(); yield three(); } //调用生成器函数 let iterator = gen(); iterator.next();
这个next调用一定是在每一次回调结束后再去执行。如果最后并列着写三个next调用,那么总时长只有三秒,因为他们几乎是同一时间被加入到异步进程处理器中。
示例二: 模拟获取 用户数据 订单数据 商品数据
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~