异步编程
有一种叫做”协程“,意为多个线程相互协作完成异步任务
协程运行流程
一,协程A开始执行
二,A执行到一半,进入暂停,执行权交由协程B;
三,(一段时间后)协程B交还执行权
四,协程A恢复执行
例
function async(){
//其他代码
var f=yield readFile(fileA)
//..其他代码
}
yield命令表示执行到此处,执行权交给其他协程,即yield命令是异步两阶段分界线
Generator是协程在es6的实现,最大特点是交出函数的执行权。
function gen(x){
var y=yield x+2;
return y
}
Var g=gen(1);
g.next()//{value:3,done:false}
g.next()//{value:underfined,done:true}
调用Generator函数会返回一个内部指针g,调用g的next方法会移动内部指针,指向第一个遇到的yeild语句,上例执行到x+2为止
即next方法作用是分阶段执行Generator函数,每次调用next方法会返回一个对象,表示当前阶段的信息。