До сих пор я думал, await
делает мою программу синхронной. Однако я вижу, что await
ожидает только того, что функция async
будет решена с обещанием, после чего все программы продолжат работать. Итак, как правильно ждать и собирать ответ от асинхронной функции?
Оригинальный код:
let result={
name:'',
country:''
};
const data = await query.getCachedData(did);
result.name = data.name; // undefined
result.country = data.country;//undefined
console.log(result);
Я не знаю, почему, но ожидание результата асинхронной функции работает:
let result={
name:'',
country:''
};
const data = await query.getCachedData(did);
result.name = await data.name; //'Jon'
result.country = await data.country;// 'US'
console.log(result);
Но я не уверен, что это решение.
Поскольку getCachedData
возвращает обещание, я подумал, что это может быть правильным способом, но then()
/ catch()
не выполнил.
query.getCachedData(did).then((tfnData) => {
result.name = data.name;
result.country = data.country;
console.log(result);
}).catch((dbError) => {
console.log(dbError);
});
Может кто-нибудь поправить меня, чтобы получить result
правильный путь?