基本概念##
解决 异步编程,整个 Generator 函数就是一个封装的异步任务,或者说是异步任务的容器。
调用 Generator 函数,会返回一个内部指针对象,即遍历器。
image.png
next 方法
的作用是分阶段执行 Generator 函数。
每次调用 next 方法,会返回一个对象,表示当前阶段的信息( value 属性和 done 属性)。
value
属性是** yield 语句后面表达式的值,**表示当前阶段的值;
done
属性是一个布尔值,表示 Generator 函数是否执行完毕,即是否还有下一个阶段。
使用Generator函数作为遍历器的返回值##
image.png image.png在处理状态机时,Genertator有优势##
image.png image.png
async
语法,generator函数的语法糖##
语法糖:就相当于汉语里的成语。
即,用更简练的言语表达较复杂的含义。在得到广泛接受的情况之下,提高开发编码的效率。
实例-抽奖##
image.png抽奖次数没有保存在全局变量中
实例-长轮询##
实时取得服务器端的变化:
- 长轮询
- websocket(兼容性差)
Generator 函数的数据交换和错误处理##
next 方法还可以接受参数,向 Generator 函数体内输入数据。
function* gen(x){
var y = yield x + 2;
return y;
}
var g = gen(1);
g.next() // { value: 3, done: false }
g.next(2) // { value: 2, done: true }
Generator 函数内部还可以部署错误处理代码,捕获函数体外抛出的错误。
function* gen(x){
try {
var y = yield x + 2;
} catch (e){
console.log(e);
}
return y;
}
var g = gen(1);
g.next();
g.throw('出错了');
// 出错了
网友评论