Hello
What does .end() do? Are there any examples available?
Please also put some information to the tutorial. That would be great!
Thanks
Jörn

> No, the call without .begin() is being deprecated.
> 
> >From yestarday's discussion on IRC I understood it's not generally possible
> to collapse to synchronous call automagically. Doing it involves running
> a (recursive) main loop until the callback is called, but this brings a lot
> of problems like something quitting the outer loop, the nested loops being
> quit out of order and such. Therefore it should not be done without user's
> explicit request.
> 
> The reason for .begin() is mostly a symetry with .end() and code readability
> where the use of .begin() clearly indicates that asynchronous operation is
> being started (and will continue beyond the statement).
> 
> > Right now async has a related problem though for async methods that return 
> > values, i.e. the following code:
> > 
> > ================
> > async int func()
> > {
> >         return 10;
> > }
> > 
> > void main()
> > {
> >         int i = func();
> > }
> > ================
> > 
> > leads to the -- somewhat surprising -- error message:
> > 
> > ================
> > mic...@andromeda:/local/pkg/vala/test$ valac --pkg gio-2.0 foo.vala
> > foo.vala:8.10-8.15: error: invocation of void method not allowed as 
> > expression
> >     int i = func();
> >             ^^^^^^
> > ================
> > 
> > since internally the invocation is moved to func.begin(), which is (always) 
> > a 
> > void method. This is no problem from async to async as we would be using 
> > int i 
> > = yield func() in that case, however it's quite common to call async() from 
> > sync(), hence some additional work is required here.
> 
> There are two ways to call asynchronous method from synchronous one. You may
> want to just start the operation and register a callback for it or you may
> want to wait in a new instance of main loop until the operation completes.
> The bare func() would be somewhat ambiguous in this respect and so it's being
> deprecated.
> 
> There may eventually be some construct to call asynchronous operation
> synchronously, but it is unlikely to be a simple call.
> 

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to