簡體   English   中英

異步函數返回未定義

[英]Async function returns undefined

我是async await新手 - 我正在嘗試使用const tokenSet = await setToken(credentials); 但是,在我的fetchEvents操作中, tokenSet始終未定義。

如何將fcmToken作為要在我的操作中使用的值返回?

async function setToken(credentials) {
    const { year, group, student } = credentials;
    const fcmToken = await firebase.messaging().getToken();

    if (fcmToken) {
        firebase
            .firestore()
            .collection("users")
            .doc(fcmToken)
            .set({
                year, group, student
            })
            .then(function(fcmToken) {
                return fcmToken;
            })
            .catch(function(error) {
                return null;
            });
    }
}

我在這里使用setToken函數:

export function fetchEvents(credentials) {
    const { year, group, student } = credentials;
    const currentDateString =
        moment().format("YYYY-MM-DD") + "T" + "07:00:00.000Z";
    const id = student || group;
    const url = `https://www.googleapis.com/calendar/v3/calendars/${id}/events?singleEvents=true&orderBy=startTime&timeMin=${currentDateString}&key=${key}`;

    return async dispatch => {
        dispatch(isLoading(true));
        console.log();
        const tokenSet = await setToken(credentials);

        if (tokenSet) { // always undefined
            fetch(url)
                .then(response => {
                    return response;
                })
                .then(response => response.json())
                .then(data => {
                    const { error } = data;
                    if (error) {
                        dispatch(hasErrored(error.message));
                    } else {
                        dispatch(fetchSuccessEvents(data.items));
                    }

                    navigate("Month");
                    dispatch(isLoading(false));
                });
        }
    };
}

嘗試這個 :

async function setToken(credentials) {
    const { year, group, student } = credentials;
    const fcmToken = await firebase.messaging().getToken();

    if (fcmToken) {
        firebase
            .firestore()
            .collection("users")
            .doc(fcmToken)
            .set({
                year, group, student
            })
            .then(function(fcmToken) {
                return fcmToken;
            })
            .catch(function(error) {
                return null;
            });
        return true;
    }
    return false;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM