チップで私を助けることができます:D。ここに私のコードです:私のnodejsスクリプトで何かが間違っています
const request = require('request');
const cheerio = require('cheerio');
function getUrls(url) {
const baseUrl = 'https://unsplash.com';
let urls = [];
request(url, (err, res, body) => {
if (!err && res.statusCode === 200) {
const $ = cheerio.load(body, { normalizeWhitespace: false, xmlMode: false, decodeEntities: true });
$('.photo.qa-photo a').each((i, e) => {
const lnk = $(e).attr('href');
if (lnk.indexOf('@') === -1 && lnk.indexOf('download') === -1) {
urls.push(baseUrl + lnk);
}
});
}
});
return urls;
}
function getImages(arr) {
let images = [];
for (const url of arr) {
request(url, (err, res, body) => {
if (!err && res.statusCode === 200) {
const $ = cheerio.load(body, { normalizeWhitespace: false, xmlMode: false, decodeEntities: true });
$('script').each((i, e) => {
if (i === 4) {
let img = $(e).text();
img = img.substring(img.indexOf('full') + 7, img.indexOf('regular') - 3);
images.push(img);
}
});
} else {
console.log(err, res.statusCode);
}
});
}
return images;
}
console.log(getImages(getUrls('https://unsplash.com/search?utf8=%E2%9C%93&keyword=life&button=')));
別に機能がうまく働いているが、私は両方の機能を結合したい場合はまず機能が作業を終えるが、私は返される配列を参照してくださいカント私に空の配列を示したにconsole.log、なぜ?私の英語のために申し訳ありません。 この小さなプログラムで、私はunsplash.comから完全に20画像のURLを取得したい Tyを事前に。
[非同期呼び出しからの応答を返すにはどうすればよいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-コール) –