1. async / await
2. нечто такое (данные загружаются один раз, доступны в любой точке кода), правда везде придется then / catch писать
var AsyncDataLoader = function(options){
var data, error, promise = new Promise( function(resolve, reject){
axios.request(options).then(function (response) {
resolve(data = response.data);
}).catch(function (err) {
reject(error = err);
})
});
this.getData = function(){
return error ? Promise.reject(error) : data ? Promise.resolve(data) : promise;
}
}
let dataBox = new AsyncDataLoader({
method: 'GET',
url: '*************************',
params: {page: '1'},
headers: {
accept: 'application/json',
Authorization: 'Token **************',
'X-CSRFToken': '*************************************'
}
});
dataBox.getData().then( data => doSomeWith(data))
// other code
// ..
// other code
dataBox.getData().then( data => doSomeWith(data))