Асинхронная функция не печатает никаких выходных данных, кроме нуля - PullRequest
2 голосов
/ 26 сентября 2019

Я новичок в асинхронном коде, и я не совсем уверен, почему код не выдает ожидаемый результат.

Когда «console.log (data.imdb_id)» не комментируется, он печатает требуемые идентификаторы один за другим, а в противном случае просто печатает «ноль» из строки «console.log (err)».

Как я могу заполнить свой обещание массива необходимыми значениями и вернуть этот массив для дальнейшего использования?

var movie_ids = [
    474350, 522938, 540901,
    384018, 419704, 420818,
    521029, 301528, 484641,
    515195, 466272, 441282,
    423204, 533642, 530385,
    568012, 535544, 456740,
    523077, 531309
]

async function insert_ids(movie_ids) {

    var promiseArray = [];

    for (var i = 1; i <= movie_ids.length; i++) {
        promiseArray.push(new Promise((resolve, reject) => {
            var url1 = "FIRST PART";
            var url2 = "SECOND PART";

            request(url1 + movie_ids[i] + url2, function (err, res, body) {
                    if (!err & res.statusCode == 200) {
                        var data = JSON.parse(body);
                        resolve(data.imdb_id);
                        // console.log(data.imdb_id); > This prints the correct ids 
                    } else {
                        console.log(err); > Prints "null"
                    }
                });
        }));
    };

    await Promise.all(promiseArray).then(function(result) {
        console.log(result);
    });

}

insert_ids(movie_ids);

...