Aha, thanks! Sync was what I was after. It's taking a while though, so I will restructure my code to use the Remote methods.
On 4 October 2012 16:48, Jasper St. Pierre <jstpie...@mecheye.net> wrote: > Use "Sync" instead of "Remote". Note that if the DBus call takes a > long time, this will freeze the Shell, so consider using Remote by > restructuring your code: > > dbusProxy.<methodname>Remote(/* arguments ... */, function (result) { > // Continue your code here, rather than below the DBus call. > }); > > For your information, this style of code is called "continuation > passing", and it can get unwieldy very quickly as your callbacks pile > up. In future versions of ECMAScript, they'll allow things called > Promises, so you can do: > > let promise = dbusProxy.<methodname>Remote(/* arguments ... */); > promise.addCallback(function(result) { > // Continue your code here, rather than than below the DBus call. > }); > > Although this may not seem like such a big change, given that promises > are like any other object, you can return a promise instead of having > to take callbacks as arguments to be passed all the way down the > chain. > > Also, trampolines: > > yield let result = dbusProxy.<methodname>Remote(/* arguments ... */); > > On Thu, Oct 4, 2012 at 2:40 AM, Amy <mathematical.cof...@gmail.com> wrote: >> Hi all, >> >> I'm taking first steps learning how to use DBus in a gnome shell extension. >> >> I've hit a stumbling block - how do I get the result of a remote >> method immediately? >> >> Something like: >> >> let value = dbusProxy.<methodname>Remote(/* arguments ... */, >> function (result) { ???? how to return it???? }); >> >> In the usage above, I want the `result` in the callback to be assigned >> to value so that if my next line of code is (say) >> >> log(value); >> >> this will be up-to-date. >> >> Otherwise, I could do something like: >> >> let value; >> dbusProxy.<methodname>Remote(/* arguments ... */, function >> (result) { value = result; }); >> log(value); >> >> but when I do this, 'value' is not up to date (until the callback >> completes), so I can't rely on the above code if I want to use 'value' >> straight away. >> >> Is there some way around this? >> _______________________________________________ >> gnome-shell-list mailing list >> gnome-shell-list@gnome.org >> https://mail.gnome.org/mailman/listinfo/gnome-shell-list > > > > -- > Jasper _______________________________________________ gnome-shell-list mailing list gnome-shell-list@gnome.org https://mail.gnome.org/mailman/listinfo/gnome-shell-list