Promiseオブジェクトのなかで配列を返したいのですが、その前に配列に対して処理を行ってから返したいです。
const makeAgenda = (cheerio_object) => { return new Promise((resolve, reject) => { console.log("In makeAgenda"); const $ = cheerio_object; const agenda = []; $('div.article-main section').map((i, node) => { return $(node).find('h2').map((i, h2) => { const array = { "h2": $(h2).text(), "h3": [] } const count = $(node).find('h3'); if (count.length >= 1) { $(node).find('h3').map((i, h3) => { return array.h3.push($(h3).text()); }) } return agenda.push(array); }) }) resolve(agenda); }) }
cheerio_objectというのは、cheerioというライブラリを用いて、Node.js上でhtmlを扱う際に、jQueryのように扱えるようにしたものです。
agendaという配列を定義して、htmlよりh2,h3要素をここに抜き出し、目次の配列をつくり、それを返すといった処理を行いたいと思っています。
現状のコードでは、agendaが未処理のまま返ってしまいます。
Promiseについて絶賛学習中の身なのですが、どうしてもこれを解決することができず困っています。配列、というかmapを行う際は、Promise.allを使った方が良い的な記事も見かけたのですが、いまいち自分のやりたい処理を実現できず。。
ご指南いただきたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/24 10:02