私は他の動作のうち、有効な構文ではありません発電機の内部でawaitを使用するにはどうすればよいですか?
function* current(db) {
while (true) {
const latest = await db.collection('messages').findOne({}, {
sort: {
timestamp: -1
}
});
// yield smth
}
}
のように、データベースを照会、発電機を持っています。私がawait
の代わりにコールバックまたは約束の解像度を持っていて、ネストされた関数から生成され、ジェネレータ自体ではない場合でも、どちらも不可能です。
どうすればいいですか?ジェネレータ内で非同期操作を使用するにはどうすればよいですか?
データベースが役立つ場合、データベースはMongoで、ドライバはmongodb-async-wrapper
です。
いいえ、ES6とES7では 'async'とジェネレータ関数を組み合わせることはできません。 – Bergi
もちろん私はできません。しかし、私の問題を全く解決することは可能でしょうか?私はデータベース依存のジェネレータを作成したいし、データベースからデータを取得することは非同期操作です。私はオプションから外れていますか? –
このようなことを実現する方法には、いくつかのESの提案があります。 https://github.com/kriskowal/gtorをご覧ください。 'await'や' yield'のどちらかを使って自分で手工芸をすることもできますが、あまりにもシンプルでクリーンではないでしょう。 – Bergi