Closuer and Async
by anribras
JavaScript
function dump(s) {
document.write(s + '</br>');
}
//模拟异步回调
function asyncOp(cb,t) {
setTimeout( ()=>cb(), t);
}
//模拟异步回调带参数
function asyncOpWithArg(cb,arg,t) {
setTimeout( ()=>cb(arg), t);
}
//asyncOp(()=>dump('async op'),500);
function* gen(n) {
dump("in gen");
while(n >0) {
dump(n);
//yield n*n;
yield asyncOp(()=>dump('async op:' + n), n*100);
n--;
}
return 0;
}
g = gen(10);
g.next();
g.next();
g.next();
function* gen1(n) {
dump("in gen");
while(n >0) {
dump(n);
//yield n*n;
yield asyncOpWithArg((n)=>dump('async op with arg:' + n),n, n*200);
n--;
}
return 0;
}
h = gen1(10);
h.next();
h.next();
h.next();