@babbert

Как переделать асинхронный код, в синхронный?

Здравствуйте. Я сейчас пытаюсь использовать обёртку для PhantomJs для node - horseman.

Вот пример кода:
const Horseman = require('node-horseman');
const users = ['PhantomJS', 'nodejs'];


users.forEach((user) => {
		console.log(5)
		const horseman = new Horseman()
			.open(`http://twitter.com/${user}`)
			.text('.ProfileNav-item--followers .ProfileNav-value')
			.click('a')
			.then((text) => {
				console.log(6);
			})
			.close();
});

Выводит мне:
5
5
6
6

А надо:
5
6
5
6


То есть сделать этот код синхронным.

Надеюсь на здешнюю помощь.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
@bagzon
Backend PHP, NodeJs, JS
Пока не поздно, попробуй не юзать PhantomJs (он уже особо не поддерживается), есть https://github.com/GoogleChrome/puppeteer от гугла, покруче будет)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Robur
@Robur
Знаю больше чем это необходимо
синхронным вы его можете сделать только если уберете все асинхронное (horseman) но тогда этот код будет бесполезен.
Вам нужна не синхронность а правильный порядок.
Используйте либо promise chaining, либо async/await в цикле вместо forEach (если phantomjs поддерживает это).
Ответ написан
Комментировать
@Shagfey
FullStack JS developer
Использовать async / await.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы