非同期処理 高度なプロミス 作成、ラッピング、入れ子、エラーの補足
入門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);