Alpha Video Training
Results 1 to 10 of 10

Thread: a5.executeThisThenThat not synchronous ?

  1. #1
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default a5.executeThisThenThat not synchronous ?

    I think I am having a problem understanding how this is supposed to work. Can someone guide me?

    My code is:
    Code:
    function f1() {
    	{grid.Object}.ajaxCallback('','','emptyPS');
    }
    
    function f2() {
    	{grid.Object}.runAction('ImportPS');	
    		
    }
    
    function f3() {
    	{grid.Object}.ajaxCallback('','','splitAddress');
    	alert('Done');
    }
    
    function mycode() {
        A5.executeThisThenThat(f1,f2,f3);
    }
    However, when I click the grid's action button that executes "mycode" I seemingly immediately get the "done" message. After I click OK for "done" I get the import window that is triggered in the AA Import Excel template, but behind the input window is an error message that says "Error executing Ajax callback function 'splitAddress' Error reported was: command: ptid = rs.data("ID") Result set row requested not found while getting result set data column 'ID'.

    Of course it didn't find it, because the 'ImportPS' function is what imports the data. If it ran one function at a time it would find it, however it runs all 3 immediately. Okay, I know they are run in order, but it doesn't stop allowing each one to complete before the next fires. What am I doing wrong?

  2. #2
    "Certified" Alphaholic
    Real Name
    Lee Vasic
    Join Date
    May 2010
    Location
    Salt Lake City
    Posts
    1,216

    Default Re: a5.executeThisThenThat not synchronous ?

    Try this: Remove your function mycode and add this at the bottom. A5.executeThisThenThat(f1,f2,f3);

  3. #3
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default Re: a5.executeThisThenThat not synchronous ?

    Lee, behind the button on the action bar, I put the a5.execute.... in the Inline Javascript Action. That gave me the same results. Then I tried it just under Text Mode. Same result.

    I also eliminated that method and behind the button I created an AJAX callback action, selected the empty one, then put the Import into the Ajax callback for empty at the bottom where it says "After callback complete Javascript." Then I created a second Ajax Callback action for the splitAddress. I selected the checkbox at the bottom that says "Run Actions Synchronously." Same result. It tries to run the split address before the file is uploaded. I know that checkbox only works with Ajax callbacks. That is why I put the Import at the bottom of the Empty ajax callback.

  4. #4
    "Certified" Alphaholic
    Real Name
    Lee Vasic
    Join Date
    May 2010
    Location
    Salt Lake City
    Posts
    1,216

    Default Re: a5.executeThisThenThat not synchronous ?

    I think you want something like this "A5.runChain" : https://forum.alphasoftware.com/show...light=runchain
    Last edited by lvasic; 11-13-2019 at 03:02 PM.

  5. #5
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default Re: a5.executeThisThenThat not synchronous ?

    Lee,

    I forgot about runChain once I found the other code. It is a bit confusing as to when I should use which one. Anyway, below is my new code. I call it by having an Action Button called "test." The on-click event is set under Text Mode, and I entered "runInOrder();" (the quotes are for this explanation; not actually included in the code).

    The results are in this order: 1) pop-up that says "All Done" 2) open file window, & 3) a split second after the open file window pops up, I get the error that says there is an error with the splitAddress callback because it cannot find the fields that I have in the code. It can't find it because it hasn't been uploaded yet. I do not want to add a pause timer, because if the user takes too long the error will appear anyway. Thoughts?

    Code:
    function f1(obj) {
    	{grid.Object}.ajaxCallback('','','emptyPS');
    	obj.next()
    }
    
    function f2(obj) {
    	{grid.Object}.runAction('ImportPS');	
    	obj.next()		
    }
    
    function f3(obj) {
    	{grid.Object}.ajaxCallback('','','splitAddress');
    	obj.next()
    }
    
    function runInOrder() {
    
    	var actions = [f1,f2,f3];
     
        A5.runChain(actions,
        	function() {	
        		alert('all Done');
        	}
        );
    }

  6. #6
    "Certified" Alphaholic TheSmitchell's Avatar
    Real Name
    Sarah
    Join Date
    Apr 2012
    Posts
    1,334

    Default Re: a5.executeThisThenThat not synchronous ?

    Quote Originally Posted by cozzitech View Post
    Lee,

    I forgot about runChain once I found the other code. It is a bit confusing as to when I should use which one. Anyway, below is my new code. I call it by having an Action Button called "test." The on-click event is set under Text Mode, and I entered "runInOrder();" (the quotes are for this explanation; not actually included in the code).

    The results are in this order: 1) pop-up that says "All Done" 2) open file window, & 3) a split second after the open file window pops up, I get the error that says there is an error with the splitAddress callback because it cannot find the fields that I have in the code. It can't find it because it hasn't been uploaded yet. I do not want to add a pause timer, because if the user takes too long the error will appear anyway. Thoughts?

    Code:
    function f1(obj) {
    	{grid.Object}.ajaxCallback('','','emptyPS');
    	obj.next()
    }
    
    function f2(obj) {
    	{grid.Object}.runAction('ImportPS');	
    	obj.next()		
    }
    
    function f3(obj) {
    	{grid.Object}.ajaxCallback('','','splitAddress');
    	obj.next()
    }
    
    function runInOrder() {
    
    	var actions = [f1,f2,f3];
     
        A5.runChain(actions,
        	function() {	
        		alert('all Done');
        	}
        );
    }
    Hello Gary,

    Are your actions interactive? IOW, do you have to select the file and upload it before you can parse the data? The runChain() and executeThisThenThat() functions will not do this for you. Instead, you'll need to restructure your logic to call the next step after the file has been uploaded if user interaction is required.
    Alpha Anywhere latest pre-release

  7. #7
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default Re: a5.executeThisThenThat not synchronous ?

    Yes. The "importPS" is an action javascript that is built into AA. It is the "Import Date from Excel or ASCII file."

    That makes sense though. At first I was wondering if it was a problem making a combination of ajax callback and javascript work in order, but your comments make sense. How can I make it pause and wait until the upload has been completed? I originally had a 2 button set up (the first did f1 and f2, and the 2nd did f3), however that is not ideal or pretty.

  8. #8
    "Certified" Alphaholic TheSmitchell's Avatar
    Real Name
    Sarah
    Join Date
    Apr 2012
    Posts
    1,334

    Default Re: a5.executeThisThenThat not synchronous ?

    Use the After upload event for the action to call the code to trigger the next step. It won't be called until after the file is uploaded.
    Alpha Anywhere latest pre-release

  9. #9
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default Re: a5.executeThisThenThat not synchronous ?

    Sarah, I have seen that before, and I used it in a different application. I guess my eyes just got too blurry trying to figure this one out, and I forgot all about it. I guess I was too focused on why runChain or thisThenThat weren't working. In my case, I am importing an Excel file 52 columns by 77 rows. While it does fire "after upload," the splitAddress function has a message box in it, and the message appears before I hit the Close button on the upload (after the upload is complete, but before I close the window). Everything worked as designed. Thank you for your advice. I'm curious to see if that message appears appropriately timed with a much larger upload.

  10. #10
    Member
    Real Name
    Gary Coslop
    Join Date
    Sep 2019
    Posts
    35

    Default Re: a5.executeThisThenThat not synchronous ?

    Lee, thank you also for your advice and direction. You introduced me to runChain. I'll definitely be trying that out more also.

Similar Threads

  1. To Wait (Synchronous) for a function to complete - then proceed
    By JPMPA in forum Mobile & Browser Applications
    Replies: 22
    Last Post: 11-18-2019, 05:08 PM
  2. Synchronous Javascript Executions Text Mode
    By joegrun4 in forum Mobile & Browser Applications
    Replies: 5
    Last Post: 10-04-2016, 08:09 PM
  3. executeThisThenThat with List Control
    By djsullivan in forum Mobile & Browser Applications
    Replies: 4
    Last Post: 11-11-2015, 12:26 PM
  4. A5.executeThisThenThat issue...... not working! :)
    By pettechservices in forum Mobile & Browser Applications
    Replies: 8
    Last Post: 12-12-2014, 12:01 PM
  5. A5.executeThisThenThat issue
    By dfricke10 in forum Mobile & Browser Applications
    Replies: 1
    Last Post: 08-08-2013, 12:08 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •