Forum: Rails Spinoffs (closed, excessive spam) Prototype callbacks: return a value

Posted by ljundie (Guest)
on 2008-06-30 10:52
(Received via mailing list)
hello back, another funny question with prototype callbacks :)


i dont manage to get a callback return a value. the example would be:



 <script type="text/javascript">

var lucas = 0;

function loadRSS() {
         var url = "sample_feeds/sample_feeds_TTblog.xhtml";
         var myAjax = new Ajax.Request( url, {
                    method: 'get',
                    parameters: '',
                    onComplete: lucas = processRSS
                    });
         }

 function processRSS(xmlHttpRequest, responseHeader) {
    value = 1;
    return value;
 }


if (lucas==1) {
  alert ('ole!');
  }

 </script>





i've also tried, without any result, something like:
onComplete: function (xmlHttpRequest, responseHeader) {
lucas = processRSS(xmlHttpRequest, responseHeader);
      }



every little help worths :)
Posted by T.J. Crowder (Guest)
on 2008-06-30 12:09
(Received via mailing list)
Hi,

Your first one doesn't work for various reasons.  The second one will
work, but it has the same sync/async problem that your other thread
suffers from.
--
T.J. Crowder
tj / crowder software / com
Posted by Frederick Polgardy (Guest)
on 2008-06-30 12:53
(Received via mailing list)
FYI, what you're doing in this example is setting the value of lucas to 
the
function processRSS immediately, and then handing that value to 
Ajax.Request
as the onComplete handler.  Syntactically it may look like it's 
performing
the assignment in the callback, but it isn't.

-Fred

On Mon, Jun 30, 2008 at 3:51 AM, ljundie <ljundie@gmail.com> wrote:

>
>    onComplete: lucas = processRSS
>
>    });
>         }
>

--
Science answers questions; philosophy questions answers.
Posted by greenie2600 (Guest)
on 2008-07-01 02:39
(Received via mailing list)
To elaborate a little:

lucas = processRSS is an expression like any other:

lucas = processRSS
4 + 3
"My name is " + myName
!myBoolean

As with any other expression, it gets simplified first, and the
onComplete property takes on that simplified value.

In the case of the assignment operator (=), the expression simplifies
to the value being assigned (in this case, a reference to the
processRSS function).

Best to avoid this syntax entirely - I've seen it used as sugar, but
IMHO it's just confusing.
This topic is locked and can not be replied to.