.then和.catch都在同一代码块中执行

时间:2019-02-18 15:06:17

标签: javascript react-native

因此,如果它已经存在一次,我会尝试阻止它进入数组。基本上,该功能正在执行其工作,并且不允许插入已经存在的项目。但是,我使用.catch放置的所有错误消息都将显示在屏幕上,意味着.then和.catch都在执行中,我不明白为什么... 这是我的代码:

WCSession didReceiveUserInfo

我试图寻找解决方案,但没有找到答案。 在此先感谢:)

2 个答案:

答案 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'));
}