Я возвращаю значение из одного класса / функции в другой.
класс 1:
const updateLikedQueue = (dispatch) => {
return async (likedId)=>{
try{
const response = await config.updateUserData(likedId, 'liked');
const matchResponse = await config.lookForMatches(likedId);
console.log('matchResponse> ' + matchResponse);//undefined
dispatch({type: 'update_user_liked_data', payload: response});
if(matchResponse){
dispatch({type: 'update_user_matches_data', payload: likedId});
return 'You have a match!'
}
} catch(e){
dispatch({type: 'add_error', payload: '' + e});
}
}
};
класс 2:
lookForMatches = async (likedId) => {
var db = firebase.firestore();
var users = db.collection("Users");
var currentUser = firebase.auth().currentUser;
var response = users.where('liked', 'array-contains', currentUser.uid);
response.get().then( function (querySnapshot) {
var match = false;
querySnapshot.forEach(function(doc) {
var docData = doc.data();
if (docData.id == likedId) {
console.log('you have a match');
match = true;
}
})
return match;
})
}
, но matchresponse
всегда появляется как неопределенное, неважно как я пытаюсь передать значение. Я попытался передать строку, изменив l oop на обычное для l oop, сломав l oop, вернувшись с в l oop, сделав обратный вызов lookForMatches asyn c. Я не уверен, почему это не работает. Обычно я могу просто вернуть значение, пока я «жду» его завершения. что я тут не так делаю?
PS Я могу console.log "у вас есть совпадение", поэтому я знаю, что оно работает.