多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[toc] #### 1.什么是 generator 一个生成器,generator函数可以在函数执行到 yield的位置刹车,然后在需要的时候急需执行 + 使用 generator 1.创建一个*开头的函数,赋值给声明变量 2.obj.next()即可执行到第一个 yield那行,包括yield那行也会执行 ``` function* fn() { console.log(1); yield; // 中断 console.log(2); } let obj = fn(); obj.next() // 1 ``` + 通过 next()传参 ``` function* fn() { console.log(1); yield; // 中断 console.log(2); let a = yield } let obj = fn(); obj.next(); // 1 obj.next() // 2 obj.next('给第二个 yield 传入的参数') // 给第二个 yield 传入的参数 ``` #### 2.无限next ```js // 无限 next function* add() { let num = 0; while (true) { yield ++num; } } const addNum = add(); console.log(addNum.next().value); // 1 console.log(addNum.next().value); // 2 ``` #### 3.生成器传参 ```js function* message(name) { const msg = yield "hello" + name; console.log(msg); if (msg === "xx") { console.log("msg is xx"); } yield "hello" + name; } const fn = message("xuxu"); // 此时传入xuxu console.log(fn.next()); // {value: 'helloxuxu', done: false} console.log(fn.next("xx")); // xx, console.log("msg is xx"), {value: 'helloxuxu', done: false} ```