計算機科学のブログ

非同期処理 高度なプロミス 作成、ラッピング、入れ子、エラーの補足

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(非同期処理)、LESSON 31(高度なプロミス)、31.5(練習問題)、Q31-1の解答を求めてみる。

コード

function loadAsync(url) {
    return new Promise(
        (resolve, reject) => {
            load(url, (error, article) => {
                if (error) {
                    reject(error);
                } else {
                    resolve(article);
                }
            });
        }
    );
}
function getArticle(id) {
    Promise.all([
        loadAsync(`/articles/${id}`),
        loadAsync(`/articles/${id}/comments`)
    ]).then(([article, comments]) =>
        Promise.all([
            article,
            comments,
            article.author_id
        ])
    ).then(
        resolve => {
            // 記事を表示
            console.log(resolve);
        },
        error => {
            // エラーを表示
            console.log(error);
        }
    ).catch(error => {
        console.log(error);
    })
}

getArticle(57);