2016-10-26 47 views
0

我正在嘗試編寫一個返回數組的函數。 我想:未定義的值承諾

this.view_skills = function() { 
     var arr = ; 
     dashboard.view_skills(); 
     skill.approved_skills.each(function(item) { 
      item.getInnerHtml().then(function(text) { 
       console.log('User skills: ' + text); 
       arr.push(text); 
      }); 
      console.log('view a:' + arr); 
     }); 
     return arr; 
    }; 

但是當我調用該函數,我得到的消息,它的不確定。 我試圖讓var arr=[] 但是這返回了空數組。

感謝您的幫助。

+0

'$ http' is asynchronous – Weedoze

+1

@Weedoze - '$ http'沒有出現在問題的代碼中 – Quentin

回答

0

1)您需要初始化數組,否則你會得到一個錯誤

2)承諾是異步的,所以當你啓動一個,JS代碼不會停止。幾乎這個兜帽:

你創建ARR數組,然後你開始承諾。這需要一些時間,以便引擎繼續執行代碼。它返回空數組,然後稍後承諾結束,並將數組放入數組中。