Я использую axios для возврата объекта JSON, необходимого для моего модуля.Это довольно большой объект, поэтому я хотел бы использовать шаблон синглтона для значительного сокращения запросов к этому объекту каждый раз, когда он требуется.
Например:
// This variable holds the JSON object once it is retrieved by axios
var myJsonObject = null;
function fetchMyJsonObject() {
if (!myJsonObject) {
// use axios here to fetch
axios.get('/objects/my-json-object')
.then(response => {
myJsonObject = response.data;
});
}
return myJsonObject;
}
ПроблемаЗдесь очевидно: запросы axios асинхронны, поэтому строка return myJsonObject;
будет выполняться до того, как запрос axios будет завершен, и до того, как переменная myJsonObject
будет назначена извлеченным данным response.data;
.Итак, myJsonObject
всегда будет null
.
Я хочу только один раз извлечь myJsonObject
и сохранить его в переменной, которая может быть передана другим клиентским модулям, если онуже существует.Если его не существует, я хочу получить его и сохранить.
Как мне реструктурировать эту функцию для достижения этой цели?