用JavaScript承诺无法读取未定义的属性'then'

Wat*_*an1 3 javascript return undefined promise

我乍一看这可能看起来像一个副本,但我已经看到了所有的答案,告诉我回来,但这是行不通的.

这是我的功能:

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);
  })
};
Run Code Online (Sandbox Code Playgroud)

我在这个函数得到错误:

function displayRemovedPastUsersFromArray(){
  removePastUsersFromArray().then(function(promises){
Run Code Online (Sandbox Code Playgroud)

基本上说我removePastUsersFromArray的未定义.但它不是因为它明显存在于上面并返回承诺??

Ber*_*rgi 10

基本上说我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);
  })
};
Run Code Online (Sandbox Code Playgroud)