Debuguei a função e não sei se com esse método conseguirei retornar o
valor na mesma função:

Dentro do VendaUtils.as

public function verificarExistencia(venda:Venda,
callback:Function):void{

 vendaService.addEventListener(ResultEvent.RESULT,
                function(event : ResultEvent):void
                  {
                        trace("Passo o resultado do result para a função que é 
me passada
por parâmetro");
                    // Habilitar o application e remover o busy cursor
                   callback(event.result);
                  });

                        trace("Existe duplicata??");
                  vendaService.existeVenda(model.id, venda);

                }

Como chamo em outro lugar da aplicação:

private var b:Boolean = false;

private function verificarExistencia(venda:Venda):Boolean {

        trace("Chamando...");
        var utils:DuplicataUtils = new DuplicataUtils();
        trace("Vou chamar a função!");
        utils.verificarExistencia(venda, function(result : Boolean) : void {
        trace("Estou no callback..");
        b = result;

       });

        trace("Vou retornar que existe é: " + b);
                                return b;

}

No caso só ia atualizar a variável boleana que fosse retorna com o
resultado do callback e o return ia estar ok... mas..

Ele passa "reto" sem depender do result

Chamando...
Vou chamar a função!
Vou retornar que é...

--------------------------------

Não tem uma maneira que eu possa parar a função?? Algo como só
retornar o resultado da função quando o result estiver pronto.A
primeira coisa que me veio na veio na cabeça foi um while de uma flag
que seria mudada para true quando o result fosse chamado :S mas isso é
grotesco e não funciona...


On 25 nov, 12:32, RafaelViana <[email protected]> wrote:
> Tem algum material que explica esse Pattern?
>
> Em qual parte do código eu faço retorno booleano da função?
>
> Porque chamando dessa maneira o return é feito antes do result do
> RemoteObject :S
>
> On 24 nov, 23:55, J.C.Ködel <[email protected]> wrote:
>
>
>
> > Callback é um ponteiro de função.
>
> > O que vai acontecer aí?
>
> > 1) Você chama o método.
> > 2) O método desabilita a aplicação (tipo um Aguarde, processando...)
> > 3) O método chama o Web Service e retorna imediatamente nada para você.
> > 4) Quando o Web Service retornar, você pega o resultado e chama o callback
> > com o teu boolean.
> > 5) Teu aplicativo continua a processar a partir dai.
>
> > Lembre-se que Flex é assíncrono... não dá pra fazer uma operação de I/O com
> > blocking.
>
> > Aliás, é exatamente o mesmo processo utilizado para verificar o resultado de
> > um Alert (quando ele possui mais do que um botão e você quer fazer algo
> > dependendo do botão clicado no Alert).
>
> > --------------------------------------------------
> > From: "RafaelViana" <[email protected]>
> > Sent: Tuesday, November 24, 2009 10:41 PM
> > To: "flexdev" <[email protected]>
> > Subject: [flexdev] Re: Função do Flex retornar valor de método do Java?
>
> > > Não entendi bem o funcionamento, e também não encontrei material na
> > > net além desse link (http://techpolesen.blogspot.com/2007/09/coping-
> > > with-flex-asynchronous-remote_26.html) que também não consegui
> > > entender muito bem.
>
> > > Adiciono um listener para que quando o resultado fosse carregado eu
> > > chamaria essa função que contém o callback...Mas o que faz esse
> > > callback? Como eu retornaria o resultado desse chamada do serviço ( a
> > > função verificarExistência retorna um valor booleano)?
>
> > > On 24 nov, 21:52, J.C.Ködel <[email protected]> wrote:
> > >> Callback:
>
> > >> public function verificarExistencia(callback:Function):void
> > >> {
> > >>  // Talvez um application.enabled = false e um setBusyCursor aqui
> > >>   vendaService.addEventListener(ChamadaCompleta,
> > >> function(resultado:Algo):void
> > >>   {
> > >>     // Habilitar o application e remover o busy cursor
> > >>    callback(resultado.algumaCoisa == "Foo");
> > >>   });
>
> > >>   vendaService.existeVenda();
>
> > >> }
>
> > >> --------------------------------------------------
> > >> From: "RafaelViana" <[email protected]>
> > >> Sent: Tuesday, November 24, 2009 9:48 PM
> > >> To: "flexdev" <[email protected]>
> > >> Subject: [flexdev] Função do Flex retornar valor de método do Java?
>
> > >> > Tenho uma função que me retorna um valor booleano se já existe uma
> > >> > venda para determinado cliente.Essa função era feita na parte do
> > >> > ActionScript mas surgiu a necessidade de fazer no back-end para
> > >> > melhorar perfomance.
>
> > >> > Porém não consegui pensar uma maneira para essa função retornar a
> > >> > resposta já que depende do result..
>
> > >> > Ex:
>
> > >> > public function verificarExistencia():Boolean{
>
> > >> > vendaService.existeVenda();
>
> > >> > return ???
>
> > >> > }
>
> > >> > Preciso para fazer algo assim: if (verificarExistencia()) ....
>
> > >> > só que a chamada ao serviço depende do result.....pensei em fazer por
> > >> > evento, ou ficar esperando e quando o valor for modificado eu retorno
> > >> > o valor, mas de qualquer maneira não tenho como retornar por esse
> > >> > método...
>
> > >> > Alguém saberia algo para me ajudar?
>
> > >>  smime.p7s
> > >> 6KExibirDownload
>
> >  smime.p7s
> > 6KExibirDownload
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a