Я новичок в Ruby и столкнулся с этой проблемой.
Я хочу определить константу, которую я могу использовать в любом месте своего кода. Это токен (строка) для доступа к API.
Дело в том, что я получаю это от асинхронной функции.
const fetchApiToken = async () => {
return new Promise((resolve, reject) => {
const config = {
method: 'post',
url: API_URL + 'v2/auth/token/',
data: {
api_key: API_KEY
},
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest' //was getting 406 without this
}
}
axios(config)
.then(resp => resp.data.token)
.then(function(token){
resolve(token);
})
.catch(err => {
reject(err.message);
});
})
}
Использование этого будет работать, но будет экспортировать обещание:
export const USER_TOKEN = fetchApiToken(); //is a promise
Что неудобно, так как мне нужно будет использовать USER_TOKEN.then((function(token){})
везде в моем коде.
Я искал в Интернете (например, эту тему), но не могу найти хороший способ справиться с этим.
Как бы вы поступили? Мне просто нужно экспортировать токен, который представляет собой строку; но я получаю это от асинхронной функции.
Спасибо !
.then
s где-то. Наилучший подход, который я нашел, - это определить точку входа всего скрипта и заставить его вызыватьfetchApiToken
, а остальную часть скрипта вызывать только внутри.then
- таким образом, нужен только один.then
, передать токен в качестве параметра по мере необходимости - person CertainPerformance   schedule 26.12.2020