Estoy haciendo llamadas a la API externa en mis Firebase Cloud Functions en las que necesito pasar un token de autenticación. En lugar de generar un nuevo token de autenticación cada vez que necesito hacer una llamada a la API externa, almaceno el token de la API cuando no tengo uno y, siempre que sea válido, quiero volver a usarlo para más solicitudes.
He creado una variable global globalToken para este propósito. Sin embargo, cuando llamo a mi función para recuperar un token y reutilizarlo si es posible, un token existente nunca se reutiliza ya que la función siempre parece decir que la variable global está configurada en nulo.
let globalToken = null async function getToken() { if(!!globalToken) { console.log('was able to re-use already-existing token') return globalToken } console.log(`no existing token could have been reused because globalToken was set to: ${globalToken}`) // always displays globalToken as null const newToken = axios.post(...) globalToken = newToken console.log(`updated globalToken to: ${globalToken}`) // correctly prints out the new token return newToken } exports.getToken = functions.https.onCall(async (data, context) => { const token = await getToken() return ({ token: token }) }) Si los registros confirman que la variable global se cambia en el momento de la recuperación del nuevo token, ¿por qué las ejecuciones posteriores leen la variable global como un valor null en lugar del token ya recuperado?