Поскольку вы открыты для предложений, я предлагаю puppeteer . Это собственный модуль node.js, который открывает страницы в новейшем Chromium (особенно полезно, поскольку PhantomJS очень устарел) и близок к PhantomJS в терминах
Если вы также используете node.js 8.x, синтаксис async / await доступен для работы с обещаниями, и он делает скремблер с кукольным веером.
Итак, чтобы запустите эту функцию в кукловоде, который вы запустите
await page.evaluate(() => page.hist(this,'P-0.00-0-0','355svxv498x0x0',417,event,0,1) );
Update
В кукольном купе есть много помощников по удобству, одна из которых - page.hover , которая буквально будет наведите указатель на элемент:
await page.hover('td.some_selector');
Но если вы хотите продолжить использовать Phantomjs и отличный модуль phantom
, вы можете:
_page.evaluate(function() {
page.hist(this,'P-0.00-0-0','355svxv498x0x0',417,event,0,1)
})
Документы на page.evaluate
: http://phantomjs.org/api/webpage/method/evaluate.html
catchError
будет отлавливать ошибки, возвращаемые наблюдаемой. В вашем случае это collectionData
. Я не знаком с RxFire, но если вы скажете, что collectionData emits a result with no elements
, то имеет смысл не вызывать catchError
. Пустые результаты все еще считаются (успешными) результатами. Попробуйте сделать collectionData
неудачным, чтобы посмотреть, не получите ли вы ошибку в catchError
.