2011/7/1 Janko Mivšek <janko.mivsek@eranova.si>
S, Julian Fitzell piše:
2011/6/30 Janko Mivšek <janko.mivsek@eranova.si
Whole point is that this is a non-blocking code, in contrast to continuation based approach like in Seaside, where similar code would block and wait until dialog component returns answer.
Janko, what are you talking about? If it's not blocking, it's just a callback. Of course Seaside can do the same thing: you just use #show:onAnswer:.
Isn't the whole point of Seaside and continuations to enable worklow like in below example from the HPI Seaside tutorial?
No. That's the point of one particular feature of Seaside.
This code is blocking until the call: returns, isn't that so?
Yes, you are correct.
From HPI tutorial [1], chapter 5-Forms, figure 5-2 :
(self call: self taskEditor) ifTrue: [aTask copyFrom: self taskEditor task]
Text bellow: "Even better, Seaside remembers the position in your code and runs it from there again, after the called component finished. This means, #call: blocks your current component, that is your callback evaluation, waits for the called component to be finished, and afterwards goes on with your callback. "
Of course. #call: both creates a continuation and interrupts the action phase of request handling (beginning response generation immediately). What I said was if you don't want to "block", you can use #show:onAnswer: instead. That method will delegate to the desired component and specify a block of code to call whenever that component answers. Then it will return and your code will keep running. Julian