Как избежать вложенных обещаний в выражении IF - PullRequest
1 голос
/ 29 апреля 2019

Я знаю, что мы не должны вкладывать обещания в функции, и все мои функции вообще не имеют вложенности, однако я не могу понять, как избежать вложения обещаний в операторе if-else в одной из моих функций.

        const staffRef = db.collection("staff").doc(uid)
        return staffRef.get()
            .then((doc) => {
                if (doc.exists) {
                    return staffRef.delete()
                        .then(() => {
                            console.log("Employee ", uid, " profile has been deleted in staff collection")
                            return null
                        })
                } else {
                    console.log("Employee ", uid, " had no dependencies")
                    return null
                }
            })

Я не думаю, что это вложение, но я все еще получаю предупреждения при развертывании. Как мне реструктурировать этот код, чтобы избежать вложенного предупреждения? Я знаю, что есть некоторые подобные ответы, но ни один из них не имеет утверждения if else

1 Ответ

1 голос
/ 29 апреля 2019

Вы можете выбросить ошибку и поймать ее следующим образом:

    const staffRef = db.collection("staff").doc(uid)
    return staffRef.get()
        .then((doc) => {
            if (doc.exists) {
                return staffRef.delete();
            } else {
                console.log("Employee ", uid, " had no dependencies")
                throw new Error("Employee " + uid + " had no dependencies");
            }
        })
        .then(() => {
            console.log("Employee ", uid, " profile has been deleted in staff collection");
            return null;
        })
        .catch(error => {
            console.log(error);
            return null;
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...