Экспортируйте возвращаемое значение цепочки обещаний - PullRequest
0 голосов
/ 01 июля 2019

Как экспортировать возвращенное значение многократного обещания. Мне нужно экспортировать обе данные из первого API во вторые данные API.Что означает вставку первых данных в массив, а также вторых, а затем возвращение этого массива и экспорт для использования из другого файла .js.

Я попытался найти способ возврата значения внутри метода then ().Но когда я вызываю импортированный файл в другой файл .js, он записывает в лог [Promise, Promise, Promise ...]

API.js

function getAllData(url) {
    return axios.get(url, {
        headers: {
            "Accept": "application/json; odata=verbose"
        }
    }).then(response => response.data.d.results);
}

function getAllDataVHistory(data) {

    return data.map(i => axios.get(`urltwo?getID${i.Id}`).then(response => {
        return response.data;
    }));
}

export const final = () =>
    getAllData(`urlone`)
    .then(data => getAllDataVHistory(data));

Display.js

import {
   final
} from "./API.js";

final().then(en => {
    // return new Promise((resolve, reject) => {
    //   if (true) {
    //    return resolve(console.log(en));
    //   } else {
    //    return reject("promise failed");
    //   }
    // });
   console.log(en);
});

Результат Console.log

(3) [Promise, Promise, Promise]

1 Ответ

1 голос
/ 01 июля 2019
return data.map(i => axios.get(`urltwo`)

Это будет возвращать массив обещаний

Поскольку вы решаете с этим обещание, вы получите этот массив (отсюда и то, что вы видите в журналах).

Вам необходимо вернуть одно обещание, чтобы оно было принято.

Используйте Promise.all(array_of_promises), чтобы создать одно обещание, которое разрешится после разрешения всех обещаний в массиве.

...