У меня генератор, который, среди других операций, запросы к базе данных, какКак использовать функцию ожидания внутри генератора?
function* current(db) {
while (true) {
const latest = await db.collection('messages').findOne({}, {
sort: {
timestamp: -1
}
});
// yield smth
}
}
, который не является допустимым синтаксисом. Если бы у меня было разрешение обратного вызова или обещания вместо await
, то выход из вложенной функции, а не самого генератора, также невозможен.
Что делать? Как я могу использовать асинхронную работу внутри генератора?
Если вам помогли, база данных Mongo, а водитель mongodb-async-wrapper
.
Нет, вы не можете комбинировать 'async' с функциями генератора в ES6 и ES7. – Bergi
Конечно, я не могу. Но можно ли вообще решить мою проблему? Я хочу создать генератор, зависящий от базы данных, и выборка данных из базы данных - это асинхронная операция. Тогда я из вариантов? –
Есть некоторые предложения ES, скрывающиеся вокруг того, как заставить такие вещи работать. Посмотрите на https://github.com/kriskowal/gtor. Вы сможете самостоятельно обрабатывать вещи, возможно, даже используя «ожидание» или «выход», но я думаю, это будет не слишком просто или чисто. – Bergi