【问题标题】:Cannot read property 'then' of undefined with JavaScript promises无法使用 JavaScript 承诺读取未定义的属性“then”
【发布时间】:2017-01-23 09:21:52
【问题描述】:

我知道乍一看这可能看起来像重复,但我已经看到所有答案告诉我要退货,但这是行不通的。

这是我的功能:

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 是未定义的。但它不是像上面那样明确存在并返回承诺??

【问题讨论】:

  • basically saying that my removePastUsersFromArray is undefined - 不,这是说函数removePastUsersFromArray RETURNS 未定义,它显然是这样,因为它根本不返回任何东西我>
  • 试试return pullAllUsersFromDB( ..... rest of your code
  • 干杯!

标签: javascript promise return undefined


【解决方案1】:

基本上是说我的removePastUsersFromArray 是未定义的

不,它表示removePastUsersFromArray() 调用返回了undefined,因为这就是您尝试调用then 的原因。

上面明显存在并返回promise?

它存在,是的,但它不返回任何东西。您拥有的returnthen 回调中,但函数本身没有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);
  })
};

【讨论】:

    猜你喜欢
    • 2019-04-23
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2019-03-10
    • 2018-08-17
    • 2019-03-25
    相关资源
    最近更新 更多