Я пытаюсь вернуть массив переданных данных из обещания, а затем несколько раз выполнить цикл, чтобы заполнить все данные. Например, у меня есть список брендов и функция, которая принимает параметр бренда и возвращает массив переданных данных.
var datasetarr = [];
brandlist = ['Bh', 'Ruffles'];
let promiseKey = new Promise((resolve, reject) => {
for(var i = 0; i < brandlist.length; i++){
datasetarr = populateData(brandlist[i], datasetarr);
}
resolve(datasetarr);
});
promiseKey.then((arr) => {
console.log('complete promise');
for(var i = 0; i < arr.length; i++){
console.log(arr[i].date + ' ' + arr[i].total);
}
});
Сообщение об ошибке
Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
at promiseKey.then
У меня нет проблем с получением данных, так как мне удалось распечатать детали. Это означает, что обещание не разрешается должным образом. Это правильный способ вернуть массив из обещания? Я не уверен, какая часть была неправильной.
promise
не определено - person guest271314   schedule 16.08.2017let promiseKey = ...
почти сразу же преобразуется вundefined
, потому чтоpopulateData
ничего не возвращает - person Jaromanda X   schedule 16.08.2017promise
не был определен. После редактированияdatasetarr
все еще не определено в.then()
- person guest271314   schedule 16.08.2017datasetarr
равноundefined
, потому чтоpopulateData
возвращаетundefined
, аpopulateData
потерпит неудачу во второй раз, потому чтоdatasetarr.push
потерпит неудачу, так какdataserarr
аргумент будетundefined
во второй раз - person Jaromanda X   schedule 16.08.2017datasetarr[i] = …
в этом цикле? - person Bergi   schedule 16.08.2017populateData
, но в лучшем случае это обещание. - person Bergi   schedule 16.08.2017