这段代码不用co如何执行?

var co = require('co');
var fetch = require('node-fetch');

function* gen () {
  let url = 'https://api.github.com/users/github';
  let result = yield fetch(url);
  let json = yield result.json();
  console.log(json);
}

co(gen);

不用co库,不改gen函数,用原生generator如何执行gen函数?

阅读 1.3k
1 个回答
var fetch = require('node-fetch');

async function gen () {
  let url = 'https://api.github.com/users/github';
  let result = await fetch(url);
  let json = await result.json();
  console.log(json);
}

gen()
  .then(json => console.log(json));

非要用 generator 的话,根据它的原理,必须修改 gen 函数:

function* gen () {
  let url = 'https://api.github.com/users/github';
  let result = yield fetch(url);
  console.log(result);
}

const gened = gen();
let result = gened.next();
result.value.then(fetch => fetch.json())
  .then(json => {
    gened.next(json);
  });

此段代码可以在阮一峰的 ES 异步任务的封装 中找到。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题