(async) spawn函数-自动执行器
function spawn(genF) {
return new Promise((resolve, reject) => {
var gen = genF();
function step(nextF) {
try {
var next = nextF();
} catch (e) {
return reject(e);
}
if (next.done) {
return resolve(next.value);
}
Promise.resolve(next.value).then(
(v) => {
step(() => gen.next(v));
},
(e) => {
step(() => gen.throw(e));
}
);
}
step(() => {
gen.next(undefined);
});
});
}



