Я использую api-клиент google в своем приложении. У меня есть функция с именем initialize
, которая использует gapi.load
для проверки подлинности моих учетных данных и загрузки API YouTube.
gapi.load
принимает функцию обратного вызова, где I authenticate
и loadYoutubeApi
, асинхронно. Я хочу знать, когда я запускаю функцию initialize
, когда эти асинхронные функции завершены. Есть ли способ вернуть мне значение в этой функции асинхронного обратного вызова, чтобы при вызове initialize
я знал, что эти асинхронные задачи завершены? Спасибо!
const apiKey = 'my-api-key';
const clientId = 'my-client-id';
const authenticate = async () => {
const { gapi } = window;
try {
await gapi.auth2.init({ clientId });
console.log('authenticated');
} catch (error) {
throw Error(`Error authenticating gapi client: ${error}`);
}
};
const loadYoutubeApi = async () => {
const { gapi } = window;
gapi.client.setApiKey(apiKey);
try {
await gapi.client.load('https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest');
console.log('youtube api loaded');
} catch (error) {
throw Error(`Error loading youtube gapi client: ${error}`);
}
};
const initialize = async () => {
const { gapi } = window;
const isInitialized = await gapi.load('client:auth2', async () => {
try {
await authenticate();
await loadYoutubeApi();
return true;
} catch (error) {
throw Error(`Error initializing gapi client: ${error}`);
}
});
console.log(isInitialized); // expects `true` but am getting `undefined`
};
initialize();