MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Async Functions inside node_helper.js

    Scheduled Pinned Locked Moved Development
    asyncscrapingnodehelpermodule
    6 Posts 5 Posters 1.9k Views 5 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      magmirusr
      last edited by

      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"}}
      
      
      
      S M 2 Replies Last reply Reply Quote 0
      • JalibuJ Offline
        Jalibu Module Developer
        last edited by

        https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Async_await

        1 Reply Last reply Reply Quote 0
        • S Offline
          sdetweil @magmirusr
          last edited by

          @magmirusr you will have to do promise.then in the non-async method to wait for the data

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          1 Reply Last reply Reply Quote 0
          • B Offline
            bizzeonline
            last edited by

            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

            1 Reply Last reply Reply Quote 0
            • M Offline
              MMRIZE @magmirusr
              last edited by

              @magmirusr

              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
              
              M 1 Reply Last reply Reply Quote 0
              • M Offline
                magmirusr @MMRIZE
                last edited by

                @mmrize
                Thank you very much!!! It’s working now. :)

                1 Reply Last reply Reply Quote 0
                • kayakbabeK kayakbabe referenced this topic on

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                • 1 / 1
                • First post
                  Last post
                Enjoying MagicMirror? Please consider a donation!
                MagicMirror created by Michael Teeuw.
                Forum managed by Sam, technical setup by Karsten.
                This forum is using NodeBB as its core | Contributors
                Contact | Privacy Policy