semi-xi / blog

blog
4 stars 1 forks source link

Generator 异步流程控制 #20

Open semi-xi opened 6 years ago

semi-xi commented 6 years ago
function run(generator) {
  var gen = generator();
  function next(data) {
    var ret = gen.next(data);
    if(ret.done) return Promise.resolve("done");
  return Promise.resolve(ret.value)
    .then(data => next(data))
    .catch(ex => gen.throw(ex));
  }

  try{
    return next();
  } catch(ex) {
    return Promise.reject(ex);
  }

}