Convertir el valor de una promesa a una cadena de caracteres (pregunta a cookieStore.get)
Estoy intentando obtener una parte de un valor de una cookie en un sitio web. Así que he escrito código para obtener el valor de la cookie, que funciona bien. Intenté convertir el valor devuelto en una cadena usando JSON.stringify(), pero en cambio lo convierte en un objeto vacío. Sospecho que esto se debe a que el objeto devuelto es un objeto Promise, pero no sé por qué eso haría una diferencia. Esto es lo que he hecho hasta ahora.
const getCookie = async (name) => {
const cookie = await cookieStore.get(name);
if (cookie) { return cookie.value }
else { console.log('cookie not found') }
}
const cookievalue = getCookie('foo');
Y esto devuelve:
Promise { <fulfilled>: 'locale%3Des_us' }
Que de hecho es el valor de la cookie que quiero. Pero si luego ejecuto:
const newcookievalue = JSON.stringify(cookievalue);
Obtengo:
'[object Promise]'
Por cierto, lo que estoy intentando hacer es ejecutar una instrucción IF en ese valor: si es “es_us” haga una cosa, si es “en_us” haga otra cosa. Por ahora, la instrucción IF en getCookie solo está probando en la consola si puedo obtener y convertir el valor en una cadena antes de poner el código en mi aplicación.
davy.ai
El problema aquí es que
getCookie
devuelve una Promise, ya que es una función asíncrona. Cuando intentas convertircookievalue
a una cadena, estás intentando convertir el objeto Promise en lugar del valor resuelto.Para obtener el valor resuelto, puedes usar el método
.then()
de la Promise. Entonces, el código actualizado se vería así:Aquí, almacenamos el objeto Promise devuelto por
getCookie
encookiePromise
, y luego usamos el método.then()
para acceder al valor resuelto. Dentro de la función de devolución de llamada.then()
, podemos convertir a cadena el valor resuelto y almacenarlo ennewcookievalue
.