因此,如果它已经存在一次,我会尝试阻止它进入数组。基本上,该功能正在执行其工作,并且不允许插入已经存在的项目。但是,我使用.catch放置的所有错误消息都将显示在屏幕上,意味着.then和.catch都在执行中,我不明白为什么... 这是我的代码:
WCSession didReceiveUserInfo
我试图寻找解决方案,但没有找到答案。 在此先感谢:)
答案 0 :(得分:0)
您必须意识到。然后将结果/错误传递给下一个。然后/捕获。您没有为 .catch 指定回调。您要做的就是在之后立即调用 Alert.alert()。然后。
所以你应该拥有
someAsyncOperation(params)
.then(function(result){
// Do something with the result
})
.catch(function(error){
// Handle error
});
还请注意,您所有的。那么似乎都未返回任何内容。
答案 1 :(得分:0)
找到了解决方案。 刚刚在.catch中的箭头函数中传递了Alert.alert()。 像这样:
function onBuy() {
const email = firebase.auth().currentUser.email;
const ref = firebase.firestore().collection('parties').doc(String(name)).collection('users').doc(String(email));
const ref2 = firebase.firestore().collection('users').doc(String(email));
ref.get()
.then((doc) => {
if (!doc.exists) {
ref2.get()
.then((doc2) => {
if (doc2.exists) {
ref.set({
firstname: doc2.data().firstname,
lastname: doc2.data().lastname,
phone: doc2.data().phone
}).then(
ref2.update({ parties: firebase.firestore.FieldValue.arrayUnion(name) }).then(
Actions.pop()))
.catch(() => Alert.alert('error', 'oops, something went wrong'));
}
}).catch(() => Alert.alert('error', 'Sorry, something went wrong'));
}
else {
Alert.alert('Purches fails', 'You have already bought a ticket to this party!');
}
})
.catch(() => Alert.alert('fails', 'user problem'));
}