Jump to content

Welcome to Smart Home Forum by FIBARO

Dear Guest,

 

as you can notice parts of Smart Home Forum by FIBARO is not available for you. You have to register in order to view all content and post in our community. Don't worry! Registration is a simple free process that requires minimal information for you to sign up. Become a part of of Smart Home Forum by FIBARO by creating an account.

 

As a member you can:

  •     Start new topics and reply to others
  •     Follow topics and users to get email updates
  •     Get your own profile page and make new friends
  •     Send personal messages
  •     ... and learn a lot about our system!

 

Regards,

Smart Home Forum by FIBARO Team


  • 0

Waiting for result from net.HTTPClient:request


Question

Posted

I have just started using this function to try to get some information from a remote JSON API. As far as I can understand, this function takes callback functions which access the result. I would like to make a function that returns this result, however, I can't seem to get it working right (tried to insert a busy wait after the request, which waited for a flag set by the callback functions. But then, the callbacks were never called).

 

Basically, I want to make a function which makes the HTTP request and returns data to the caller. Can anyone point me to the best practices here?

3 answers to this question

Recommended Posts

  • 0
Posted (edited)

A related question was answered by me some time ago.

 

Please login or register to see this link.

 

Does this help?

Edited by petergebruers
  • 0
  • Inquirer
  • Posted

    Thank you! Not entirely, I want to pass control to another part of the program, while your final solution seems to pack the overall flow control of your program into the callbacks.

    • 0
    Posted

    The HTTP client always uses callbacks, there is not other way. So, if you want to call function xyz() after you get a result from the web server, you have to call xyz() from within the function assigned to the "success" parameter. You'll have to pass stuff around, but that's the way to do it. Basically, you need to forget about "returning data from http client" because it doesn't work that way. The HTTP client does not return, instead it calls the function pointed to by the "success" field.

     

    Also, the callbacks can only run if your main code ends. So doing a "while true do" loop is a no-go either. You have to chain everything via the function you assign to the "success" parameter. Of course, if you want to loop indefinitely, just do a recursive call...

    Join the conversation

    You can post now and register later. If you have an account, sign in now to post with your account.

    Guest
    Answer this question...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...