Waitfor承诺完成for循环(Typescript)

时间:2017-05-26 19:10:40

标签: javascript angular typescript

我的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?有没有人可以告诉我如何解决我的问题

1 个答案:

答案 0 :(得分:4)

this.item访问function (result){...}的上下文,我想你想要外部上下文。

请改用箭头功能,因此:

Promise.all(promises)
.then((result) => {
...
});