OK, problem solved.
pt., 11 sty 2019 o 21:18 . <[email protected]> napisał(a): > What interesting: if I define .then just as: > .then(alert("in .then")); > then it works fine. But if i use the function() inside or the notation > you've provided: > .then(output => { > alert(output); > }); > > > then system never reaches the .then. What I'm doing wrong? > > pt., 11 sty 2019 o 20:44 . <[email protected]> napisał(a): > >> Martin, >> >> Thank you very much for the answer! Unfortunately I'm still stuck :-( >> Please take a look at the following code and tell me why it's still >> asynchronous. It display properly messages: "testFunct" and then "end of >> testFunct", but it never reach the .then or .done. >> Thank you in advance! >> >> function testFunc() { >> alert("testFunc"); >> lic = cockpit.spawn([ >> "/usr/share/cockpit/testSoftware/connectExternalSystem"], { >> directory: "/usr/share/cockpit/testSoftware", >> err: "message" >> }) >> .then(function() { >> alert("in .then of testFunc. Error: "+message); >> }) >> .done(function() { >> alert("in .done of testFunc. Error: "+message); >> }); >> alert("end of testFunc"); >> } >> >> czw., 10 sty 2019 o 09:02 Martin Pitt <[email protected]> napisał(a): >> >>> Hello Magik, >>> >>> . [2019-01-09 21:51 +0100]: >>> > I'm C programmer learning now Cockpit. My problem is as follows: for >>> some >>> > of the operation I must use external helper and I must wait for it >>> output. >>> > The cockpit.spawn() function returns the promise, which is non-blocking >>> > operation (as expected). How can I make it work as blocking one? Which >>> > mean: the rest of the code in the function should be done after >>> receiving >>> > full output of the cockpit.spawn (done() or fail()) >>> >>> This is a common pitfal when coming from the world of synchronous >>> programming >>> languages (such as C or Python) and starting with asynchronous >>> JavaScript. >>> Daniel's await proposal can certainly help to make async code look like >>> it was >>> written in a sync style; but honestly, it's really best to let go of this >>> pattern when writing JS. >>> >>> So instead of >>> >>> output = cockpit.spawn(..).make_this_magically_sync(); >>> followup_action(output); >>> >>> actually use JavaScript promises as they are intended: >>> >>> cockpit.spawn(..) >>> .then(output => { >>> followup_action(output); >>> }) >>> .catch(err => { >>> console.error(err); >>> }); >>> >>> i. e. organize the stuff that depends on the result into promise >>> handlers. >>> >>> Martin >>> _______________________________________________ >>> cockpit-devel mailing list -- [email protected] >>> To unsubscribe send an email to >>> [email protected] >>> Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html >>> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines >>> List Archives: >>> https://lists.fedorahosted.org/archives/list/[email protected] >>> >>
_______________________________________________ cockpit-devel mailing list -- [email protected] To unsubscribe send an email to [email protected] Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedorahosted.org/archives/list/[email protected]
