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
-~----------~----~----~----~------~----~------~--~---