鍍金池/ 問答/HTML/ 這段代碼不用co如何執(zhí)行?

這段代碼不用co如何執(zhí)行?

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函數(shù),用原生generator如何執(zhí)行g(shù)en函數(shù)?

回答
編輯回答
朕略傻
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 的話,根據(jù)它的原理,必須修改 gen 函數(shù):

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 異步任務(wù)的封裝 中找到。

2017年9月7日 06:07