2017-05-26 25 views
0

我在我的angular2項目中遇到for-loop和promise問題。 我需要觸發幾個返回承諾的方法。 (Promise.all(variable).then(funtion(result){.......}; )當我想在Promise.all(變量)中填充數組時,我希望在Promise中訪問數組。所有的控制檯promte錯誤Waitfor Promises在for循環中完成(打字稿)

core.es5.js:1084 ERROR Error: Uncaught (in promise): TypeError: Cannot set property 'item' of undefined

... 

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?有誰可以給​​我一個愛迪我將如何解決myproblem

回答

4

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

使用箭頭功能代替,因此:

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

你好貸款,是的,你是對的感謝。你救了我的夜晚:-) –