A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
Async Functions inside node_helper.js
-
I wrote a little MagicMirror module which web scrapes a website with puppeteer.
Therefore I’ve used async functions to fetch the data.
It’s working fine but as soon as I send it back to my main.js file it appears as a Promise and I can’t process the data.Any suggestions how to wait for the data before sending it to the main.js file?
... socketNotificationReceived : function(notification, payload) { var self = this switch(notification) {case"CASE_1": text = scrape("https...") this.sendSocketNotification("text",text) break}} ... async function scrape(url){ try{ const browser = await puppeteer.launch() const page = await browser.newPage(); await page.goto(url) const [el] await page.$x("...") const txt = await el.getProperty("textContent") const rawTxt = await txt.jsonValue browser.close() return rawTxt} catch { return "ERROR"}}
-
-
@magmirusr you will have to do promise.then in the non-async method to wait for the data
-
Hence I’ve utilized async capacities to get the information.
It’s turned out great however when I send it back to my main.js record it shows up as a Promise and I can’t handle the information.
Thanks.
Aaki working at Bizzeonine -
case "CASE_1": scrape("...").then((text) => { this.sendSocketNotification("text", text) }) break
Or
case "CASE_1" const AsyncJob = async () => { var text = await scrape("...") this.sendSocketNotification("text", text) } AsyncJob() break
-
@mmrize
Thank you very much!!! It’s working now. :) -