On 2022-03-18 11:19, Bernard Devlin via use-livecode wrote:
Here's a peculiarity I haven't seen mentioned before. I am trying to test
the viability of the idea of a function to call back to LC and provide
debugging info.

Assume you create a LC function lclog(pmsg,pval) and you put a breakpoint in the IDE inside that function body. Set the htmltext of a browser widget to the code below, set the javascriptHandlers of the browser to contain the
word: lclog . Your browser widget will have a button 'clickme'.
1) On clicking that button the JS alerts ALL trigger first.
2) After they have fired the first call to lclog() runs, and the second
call to lclog() never runs.

<html><head><script>

function lcxhr(method, url) {

alert('lcxhr called');

var json = JSON.stringify({ name: "John", surname: "Smith"});

liveCode.lclog('json created', json);

alert('you see this alert before the above call to lclog()');

liveCode.lclog('exit js function','');

}</script>

So this is quite separate from what happens in the web engine which works very differently.

Embeddable browsers are inherently asynchronous in their execution (not necessarily in a multi-thready way, although that does play a part) - but more in the sense that you can't get an embedded browser to do anything and have it 'block' until it is done.

The converse is also true - the request to call an LC handler from the browser widget is basically a post - not a send - which means that (really) you can only call LC handlers as tail calls - i.e. as the last thing on a handler.

Warmest Regards,

Mark.

P.S. The web engine is (essentially) the running the LC script 'as JavaScript' so the same limitation does not apply - calling LC handlers from JS in the web engine is synchronous.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to