Если вы хотите сделать это асинхронным способом, это то, что вам нужно сделать.
// works only inside async functions
let value = await promise;
например
async function f() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("done!"), 1000)
});
let result = await promise; // wait till the promise resolves (*)
alert(result); // "done!"
}
f();
Если вы попытаетесь использовать await в неасинхронной функции,это будет синтаксическая ошибка:
function f() {
let promise = Promise.resolve(1);
let result = await promise; // Syntax error
}
Источник: https://javascript.info/async-await
Проверьте этот JS пост.Может быть полезно для вас.
Те же принципы применимы к Python.Вы можете использовать async / await или yield from.Однако, если вы используете любую из не асинхронных функций, вы получите синтаксическую ошибку.
И здесь - это публикация на Python, которая даст вам хорошее понимание того, как вы должны ее реализовать..
А вот простой пример того, как это должно быть сделано:
import asyncio
async def io_related(name):
print(f'{name} started')
await asyncio.sleep(1)
print(f'{name} finished')
async def main():
await asyncio.gather(
io_related('first'),
io_related('second'),
) # 1s + 1s = over 1s
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Выходы:
first started
second started
first finished
second finished