2016-09-15 96 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); 
    }) 
}; 
相关问题