我的angular2项目中存在for循环和promise的问题。 我需要触发几个返回承诺的方法。在承诺之后,我想通过使用Promise.all(变量)来填充类中的数组.then(funtion(result){.......}; 当我想在Promise.all中访问数组时,控制台会提出错误
core.es5.js:1084 ERROR错误:未捕获(在承诺中):TypeError:不能 设置属性' item'未定义的
...
public item;
allItems = [];
public method() {
var promises = [];
this.dbService.getItem('myKey', 'table')
.then((data) => {
this.myArrayNumber = data;
for (let i = 0; i < this.myArrayNumber.length; i++) {
promises.push(this.dbService.getItem(this.epodLiefernr[i], 'lieferungen'));
}
Promise.all(promises)
.then(function (result) {
for (let i = 0; i < result.length; i++) {
this.item = result[i];
}
});
...
为什么,那时我无法访问this.item?有没有人可以告诉我如何解决我的问题
答案 0 :(得分:4)
this.item
访问function (result){...}
的上下文,我想你想要外部上下文。
请改用箭头功能,因此:
Promise.all(promises)
.then((result) => {
...
});