Edit in JSFiddle

console.log = function(str) {
	var node = document.createElement("p");
  node.innerHTML = str;
  document.body.appendChild(node);
}

var file = {
  'file1.txt': "file2.txt",
  'file2.txt': 'Hello, Generator!'
};

/**
 * @description 模拟读取文件
 */

function readFile(filename, cb) {
  setTimeout(function() {
    cb(null, file[filename]);
  }, 1000)
}
/**
 * @description 文件读取完成后的回调函数,获取generator的控制权,并将文件内容传回给generator。
 * @param {Object} err
 * @param {any} data
 */
function dealWith(err, data) {
  gen.next(data);
}

/**
 * @description 主程序
 */
function* run() {
  var file1 = yield readFile("file1.txt", dealWith); // 获取file1.txt的内容
  var file2 = yield readFile(file1, dealWith); //从file1.txt中获取file2的文件名,并获取file2的内容
  console.log(file2); // 弹出file2的内容
}

var gen = run(); // 实例化generator
gen.next(); // 启动genertor