Сообщение от EmperioAf
|
Да, есть.
Переходить на полностью async/await стэк, так, чтобы все функции которые что-то делают асинхронно, стали возвращать промисы, а не принимать callback для продолжения работы, например встроенный util.promisify умеет оборачивать классические error-first callback функции в функцию которая возвращает Promise.
Ну и любую асинхронную функцию можно завернуть в функцию которая вернет промис, в качестве примера:
const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout));
Теперь в вашей асинхронной функции можно написать:
async function test() {
const db = new PGPool(config);
const data = await db.query(sql);
const { rows } = data;
console.log('data have received');
for(const row of rows) {
await delay(1e3);
console.log(row);
}
}
test().catch(console.error);
Те же самые ошибки ловятся в таком случае через try/catch. Единственное, что важно это всегда помнить какая функция вызывается, синхронная или асинхронная, чтобы не получить в итоге Unhandled promise rejection в production.
Опишите пожалуйста ситуацию, когда вы не можете использовать async/await?
|
Вот в этом случае:
async function() {
let lineReader = require('readline').createInterface({
input: require('fs').createReadStream(path.join(__dirname, '../files/log.log'))
});
let r = await lineReader.on('line');
console.log(r);
}
Не хочет строку выдавать. Вообще ищу рабочую библиотеку которая строки сможет читать из файла