やっていること
requestとcheerioを使ってWebサイトから特定のデータを抽出するコードを書いています。
困っていること
理想の出力は下記の通りです。
start url1 url2 url3 [url1, url2, url3]
実際の出力は下記のようになってしまいます。
start [] url1 url2 url3
awaitを待って配列を出力したい所で、先にconsole.log(urls)
が呼ばれてしまっているようです。
コード
javascript
1export const someFunction = async () => { 2 console.log('start'); 3 let urls: string[] = []; 4 try { 5 await request.get( 6 "https://example.com", 7 async (error, response, data) => { 8 const $ = await cheerio.load(data); 9 $(".some-class").each((index, item) => { 10 const url = $(item).attr("href"); 11 console.log(url); 12 urls.push(url); 13 }); 14 } 15 ); 16 } catch (e) { 17 console.log(e); 18 } 19 console.log(urls); 20};
each
を使っている部分が影響しているのでしょうか。
色々と調査してみましたが原因が分からず、考えられる理由があれば教えていただけないでしょうか。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。