【发布时间】:2018-01-24 00:38:38
【问题描述】:
我正在尝试从 Promise 返回一组推送的数据,然后循环多次以填充所有数据。例如,我有一个品牌列表和一个接收品牌参数并返回一组推送数据的函数。
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未定义 -
是的,我也没有找到承诺。
-
注意,
let promiseKey = ...将立即解析为undefined,因为populateData不会返回任何内容 -
@JaromandaX “我对您遇到的错误感到惊讶” 请参阅原始帖子。
promise未定义。编辑后datasetarr仍然未定义在.then() -
不,我明白为什么
datasetarr是undefined,因为populateData返回undefined- 并且populateData将第二次失败,因为datasetarr.push将失败为@987654336 @ 参数将是undefined第二次
标签: javascript asynchronous promise resolve