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