Skip to content

Latest commit

 

History

History
23 lines (19 loc) · 787 Bytes

24.11.md

File metadata and controls

23 lines (19 loc) · 787 Bytes

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 节讲解。