24.11 Promise 和 generator
在下面的代码中,我使用流程控制库 co 来异步读取两个 JSON 文件。注意在行 A ,执行块会一直等到 Promise.all()
处理完成。这意味着看起来同步的代码实际上执行了异步的操作。
co(function* () {
try {
let [croftStr, bondStr] = yield Promise.all([ // (A)
getFile('http://localhost:8000/croft.json'),
getFile('http://localhost:8000/bond.json'),
]);
let croftJson = JSON.parse(croftStr);
let bondJson = JSON.parse(bondStr);
console.log(croftJson);
console.log(bondJson);
} catch (e) {
console.log('Failure to read: ' + e);
}
});
详细内容在 21.5.2.1 节讲解。