[英]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.