xxxMI Ответов: 1

Как вернуть массив в цикл for как обещание?


Я пытаюсь вернуть массив как обещание, которое может быть вызвано в функции. Но он возвращается до завершения вызова. Пожалуйста, помогите мне, как я могу это сделать?

Что я уже пробовал:

function getNewAddedSchedules() {
    var newScheduleArray = [];
    return localforage.getItem("schedulesOffline")
        .then(function (value) {
            for (var i = 0; i < value.length; i++) {
                 ScheduleApi.schedule("57cd27fa390feec82e3be851")
                    .then(function (data) {
                        if (data === "") {
                            newScheduleArray.push(value[i]);
                        }
                    });
            }
            return newScheduleArray;
        });
};


function saveOfflineToOnline() {
    getNewAddedSchedules().then(function (data) {
        console.log(data);
    });
}

Patrice T

Что вы подразумеваете под словами "Я пытаюсь вернуть массив как обещание, которое может быть вызвано в функции" ?

xxxMI

Я должен был вернуть "newScheduleArray" и получить его значение в функции " saveOfflineToOnline()"

Patrice T

Почему "обещать"?

xxxMI

из-за асинхронного вызова api.

1 Ответов

Рейтинг:
0

Anurag Sharma

Привет,

Вы пытаетесь сделать несколько асинхронных вызовов в цикле. Но вы возвращаете единственное обещание, которое вызывает эту проблему. Вместо этого вы можете использовать $q.all для решения этой проблемы. Вот пример -

JS Bin - совместная отладка JavaScript[^]

Обратите внимание, как функция вызова aysnc должна возвращать обещание, а функция обработки должна помещать его в массив обещаний.

Дайте мне знать, если у вас возникнут вопросы.

Спасибо.