Я использую структуру Koa и ES6. Как получить первый метод для возврата результата к этой функции представления, которая требует yield
? Я пытаюсь использовать библиотеку pg, которая использует асинхронные вызовы, в приложении 7.5.Как вернуть результат генератора, вызывающего асинхронную функцию?
pgrepo.listCities = function*() {
pool.query('SELECT distinct(town) from public.property_uk', function(err, result) {
console.log("result: " + JSON.stringify(result.rows));
// What now?
});
};
www.pgindex = function*() {
let results = yield pgrepo.listCities(); // What now?
console.log('handler: ' + results)
yield this.render('pgindex', {
items: results
});
}
Я понимаю, что происходит, то yield
откладывает исполнение, так что функция работает и дает без каких-либо результатов, а затем пожары запросов и дает результаты.
Итак, мой вопрос в том, как я могу реорганизовать эти 2 функции, чтобы результаты запроса возвращались к функции, которая хочет передать их в представление.
Вы действительно хотите генераторы? Первая функция ничего не дает, вторая дает разные типы данных. Кажется, вам скорее нужен async/wait. – zeroflagL