getInfo
- это обещание, также метод then
возвращает само обещание.
Вы присваиваете свою переменную Promise, поэтому, очевидно, вы получите ссылку на нее.
Как сказал вопрос, который вы связали, вы должны принять асинхронную природу JavaScript, и ваш поток просто синхронен сверху вниз. Это просто асинхронно внутри функции getInfo
, но этого недостаточно, потому что поток остается синхронным.
Я советую вам, просто чтобы понять, что вы делаете, чтобы не использовать async / await, поскольку это позволяет вам думать, что все синхронно, а это не так.
Так что используйте значение val только внутри функции then
:
getInfo().then(function (val){
// Your async code here
});
Если вы уверены в этом способе мышления, вы можете реорганизовать его, используя async / await , который является почти синтаксическим сахаром для получения лучшего кода:
(async function () {
async function getInfo () {
// your code
}
datastore.info = await getInfo();
console.log(datastore.info);
})();