2016-09-15 45 views
2

我明白乍一看這可能看起來像一個重複,但我已經看到所有的答案,告訴我把回報,但這是行不通的。無法讀取未定義的屬性'然後'的JavaScript承諾

這是我的函數:

function removePastUsersFromArray(){ 
    pullAllUsersFromDB().then(function(users_array){ 
    var cookie_value = document.cookie.split('=') [1]; 
    const promises = [] 
    for (var i = 0; i < _USERS.length; i++) { 
     if (_USERS[i].useruid == cookie_value){ 
     var logged_in_user = _USERS[i].useruid; 
     promises.push(
      onChildValue(rootRef, 'users/' + logged_in_user + '/disliked_users/').then(formatUsers) 
     ) 
     promises.push(
      onChildValue(rootRef, 'users/' + logged_in_user + '/liked_users/').then(formatUsers) 
     ) 
     } 
    } 
    return Promise.all(promises); 
    }) 
}; 

,我得到的錯誤,在此功能:

function displayRemovedPastUsersFromArray(){ 
    removePastUsersFromArray().then(function(promises){ 

基本上是說,我的removePastUsersFromArray是不確定的。但它不是因爲它清楚地存在於上面並返回承諾?

+2

'基本上是說,我的removePastUsersFromArray是undefined' - 不,它說,fiunction'removePastUsersFromArray' **返回**不確定的,這顯然不行,因爲它不返回*任何東西* –

+1

嘗試'返回pullAllUsersFromDB(.....你的代碼的其餘部分「 –

+0

歡呼聲削減! – Waterman1

回答

9

基本上是說,我的removePastUsersFromArray未定義

不,它說,removePastUsersFromArray()調用返回undefined,因爲這是你試圖調用then在什麼。

它顯然存在於上面並返回承諾?

它存在,是的,但它不返回任何東西。 return您在then回調中,但函數本身沒有return語句。 return從鏈接產生的承諾:

function removePastUsersFromArray() { 
    return pullAllUsersFromDB().then(function(users_array) { 
//^^^^^^ 
    var cookie_value = document.cookie.split('=') [1]; 
    const promises = [] 
    for (var i = 0; i < _USERS.length; i++) { 
     if (_USERS[i].useruid == cookie_value){ 
     var logged_in_user = _USERS[i].useruid; 
     promises.push(
      onChildValue(rootRef, 'users/' + logged_in_user + '/disliked_users/').then(formatUsers) 
     ); 
     promises.push(
      onChildValue(rootRef, 'users/' + logged_in_user + '/liked_users/').then(formatUsers) 
     ); 
     } 
    } 
    return Promise.all(promises); 
    }) 
}; 
相關問題