Estoy creando un bot de holgura que accede a la API de Spotify para hacer cosas como reproducir canciones, poner canciones en cola, omitir canciones e informar la pista que se está reproduciendo actualmente.
El problema es cuando se intenta omitir una canción y luego acceder a la nueva canción actual y, por último, informarla al chat de Slack. las llamadas a funciones son las siguientes:
A pesar de que las llamadas a funciones están en ese orden, la aplicación está ejecutando las funciones en este orden:
como probablemente puedas ver, esto termina publicando la canción que se omitió y luego omitiendo la canción. ¿Alguien tiene alguna idea de cómo puedo hacer esto sincrónico?
Gracias.
reaction listener: app.event("reaction_added", async ({ event }) => { console.log(event); const reaction = event.reaction; if (reaction === "hankey") { skipSong(); } }); Access current song: const accessCurrentSong = (token) => { const options = { url: "https://api.spotify.com/v1/me/player", headers: { Authorization: `Bearer ${token}` }, json: true, }; try{ request.get(options, function (error, response, body) { if (error) { console.error(error); } else { const { name, artists, duration_ms, album } = body.item; SONG = name; ARTISTS = getArtists(artists); DURATION = convertDuration(duration_ms); IMAGE_URL = album.images[0].url; RELEASE_DATE = album.release_date; DEVICE_ID = body.device.id; console.log( `Song Title: ${SONG} \nArtist: ${ARTISTS} \n${DURATION} \n ${IMAGE_URL} \n ${DEVICE_ID}` ); postCurrentSong(SONG, ARTISTS, DURATION, IMAGE_URL, RELEASE_DATE) } }); } catch { refreshToken(); accessCurrentSong(ACCESS_TOKEN) } } skip current song: const skipSong = () => { const skipOptions = { url: `https://api.spotify.com/v1/me/player/next? device_id=${DEVICE_ID}`, headers: { Authorization: `Bearer ${ACCESS_TOKEN}` }, json: true, }; request.post(skipOptions, function (err, response) { if (err) console.log("error occurred"); else console.log(`song skipped\n ${response}`); }); accessCurrentSong(ACCESS_TOKEN) };Tengo algunos console.log para probar en cada función y aparentemente se registran al mismo tiempo. aunque el acceso a la canción actual no se llama hasta el final de la función de salto, la prueba de acceso a la canción actual se registra después del primer registro de prueba de salto y antes de la última salida de salto.