Eu estou escrevendo uma aplicação que utiliza a API do Spotify, via HTTP, sem nenhuma biblioteca, dividi o meu código em dois arquivos, um módulo onde está todo o processo de requisição do token e outro arquivo ao qual vai o código principal, estou usando o módulo Axios para fazer as requisições HTTP, mas estou com um problema, no meu código, no arquivo main.js primeiramente eu chamo a função que está no módulo que me retorna o token e logo em seguida dou um console.log nesse token para verificar se está tudo correto, mas quando eu rodo o código o console.log do token vem primeiro sem absolutamente nada e depois vem o console.log de dentro da função token, era para essa ordem ser contrária, o que eu posso fazer para corrigir isso? Eu suponho que tenha algo haver com async e promises, não tenho muito conhecimento, segue abaixo os dois códigos:
request_token.js
const axios = require('axios')
exports.token = function(client_id, client_secret) {
let token = ''
const url_to_get_token = 'https://accounts.spotify.com/api/token'
const data_to_get_token = {
grant_type: 'client_credentials',
client_id: client_id,
client_secret: client_secret
}
const config_to_get_token = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
axios.post(url_to_get_token, data_to_get_token, config_to_get_token)
.then(response => {
console.log("Response:", response.data)
token = response.data.access_token
})
.catch(error => {
console.log('Error in request:', error)
})
return token
}
main.js
const request_token = require('./request_token')
require('dotenv').config()
const client_id = process.env.CLIENT_ID
const client_secret = process.env.CLIENT_SECRET
const token = request_token.token(client_id, client_secret)
console.log(token)