无法使用 JavaScript 承诺读取未定义的 属性 'then'
Cannot read property 'then' of undefined with JavaScript promises
我明白乍一看这可能看起来像重复的,但我已经看到了所有的答案告诉我把 return 放进去,但那是行不通的。
这是我的职能:
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
未定义。但它并不像上面清楚地存在和 return 的承诺那样??
basically saying that my removePastUsersFromArray
is undefined
不,它说 removePastUsersFromArray()
调用 returned undefined
,因为这就是你要调用 then
的原因。
it clearly exists above and returns promises?
它存在,是的,但它没有 return 任何东西。您拥有的 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);
})
};
我明白乍一看这可能看起来像重复的,但我已经看到了所有的答案告诉我把 return 放进去,但那是行不通的。
这是我的职能:
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
未定义。但它并不像上面清楚地存在和 return 的承诺那样??
basically saying that my
removePastUsersFromArray
is undefined
不,它说 removePastUsersFromArray()
调用 returned undefined
,因为这就是你要调用 then
的原因。
it clearly exists above and returns promises?
它存在,是的,但它没有 return 任何东西。您拥有的 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);
})
};