网站的概念,简述网站开发工作流程,编写小程序,网站建设和维护怎么学Generator Generator函数是ES6提供的一种异步编程解决方案#xff0c;Generator函数是一个状态机#xff0c;封装了多个内部状态。 执行Generator函数会返回一个遍历器对象#xff0c;也就是说#xff0c;Generator函数除了状态机#xff0c;还是一个遍历器对象生成函数。…Generator Generator函数是ES6提供的一种异步编程解决方案Generator函数是一个状态机封装了多个内部状态。 执行Generator函数会返回一个遍历器对象也就是说Generator函数除了状态机还是一个遍历器对象生成函数。返回的遍历器对象可以依次遍历Generator函数内部的每一个状态。 Generator的两个特征 function关键字与函数名之间有一个星号函数体内部使用yield产出语句定义不同的内部状态 function* helloWorldGenerator() {yield hello;yield world;return ending;
}var hw helloWorldGenerator(); hw.next() // { value: hello, done: false } hw.next() // { value: world, done: false } hw.next() // { value: ending, done: true } hw.next() // { value: undefined, done: true } yield语句 由于Generator函数返回的遍历器对象只有调用next方法才会遍历下一个内部状态所以其实提供了一种可以暂停执行的函数。yield语句就是暂停标志。 yield和return 相似都能返回紧跟在语句后面的那个表达式的值 区别 每次遇到yield函数暂停执行下一次再从该位置继续向后执行而return语句不具备位置记忆的功能一个函数里面只能执行一次或者说一个return语句但是可以执行多次或者说多个yield语句。在使用for...of时自动遍历Generator函数不需要调用next方法 yield*语句 如果在Generater函数内部调用另一个Generator函数默认情况下是没有效果的。这个就需要用到yield*语句用来在一个Generator函数里面执行另一个Generator函数。 function* bar() {yield x;yield* foo();yield y;
}// 等同于
function* bar() {yield x;yield a;yield b;yield y;
}// 等同于
function* bar() {yield x;for (let v of foo()) {yield v;}yield y;
}for (let v of bar()){console.log(v);
}
// x
// a
// b
// y 转载于:https://www.cnblogs.com/sker/p/5520697.html