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

results matching ""

    No results matching ""