Web vs Native (was Re: HTML5 limitations?)
Mark Waddingham
mark at livecode.com
Fri Jul 28 12:43:42 EDT 2017
On 2017-07-28 18:28, William Prothero via use-livecode wrote:
> on myRequest
> —send a POST or GET request, whatever, with a callback handler
> specified.
> —display a mask that inhibits new mouse clicks and sets a busy icon.
> end myRequest
> on myCallbackHander myReturnData
> —do whatever you want with myReturnData
> end myCallbackHander
>
> But then again, I’m not a master of javascript, so there may be other
> issues.
I think it is mainly the thought process which goes with having to do
things in this 'threaded style' - for simple things it is fine, but it
can get unwieldy pretty quickly for long running sequences of stuff.
From an abstract perspective, at the very least, it *should* be possible
to make this more natural (e.g. C# has an 'async' concept - which is
basically a bit like out wait but more focused) so that is one angle
here.
>> Although I am one of the people calling for more browser widget
>> development...
>>
>> I have my doubts about the ability to make it synchronous with LC.
It is definitely possible - the fact it is not is related to a technical
detail in the way the engine interoperates with CEF (and the other
browsers). However, being possible says nothing about the difficulty of
getting it to work or ensuring it continues to work!
The HTML5 engine IS synchronous so that gives at least a suggestion that
is should be possible (although, admittedly, the HTML5 engine IS
JavaScript so there's no 'world-boundary' to be concerned about in that
instance).
At the end of the day, it might not be that making it synchronous *is*
the solution, but instead tweaking engine syntax and semantics to make
it easier to deal with this asynchronicity.
e.g.
on mouseUp
async do "..." as javascript into tVar
-- implicit wait until tVar has been set
put tVar into field 1
end mouseUp
Note, this is just pseudo-code for the idea. The hardest part about
doing the callback thing is that it splits up the critical sequence of
actions you are trying to code into lots of bits separated by cruft (the
handler definitions). This reduces readability, and maintainability
which is something we really don't want. i.e. The problem you are trying
to solve is obfuscated by the technical baggage needed to solve it.
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list