Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kimura

Module pattern - Implementação ajax async

Recommended Posts

Olá, estou com dificuldade para implementar recursos ajax async utilizando o module pattern proposto abaixo:

 

Ex.:

 

app.js

;(function( window, document, $, undefined )
{
    'use strict';

    var App = (function ()
    {
        var self = {};

        self.controller = null;

        self.ajax = function(path, data){

            return $.ajax({
                type       : "POST",
                url        : path,
                data       : data,
                datatype   : "json",
                contentType: "application/json; charset=utf-8"
            });
        };

        self.find = function (action, data, controller)
        {
            controller = controller || self.controller;
            data = data || null;

            if (!action) throw "test";
            if (!controller) throw "test 2";

            var retorno = null;

            self.ajax(controller + action, data)
                .then(
                function success(r) {
                    retorno = r;
                },
                function fail(data, status) {
                    alert('Request failed.  Returned status of ' + status);
                });

            return retorno;
        };

        return self;
    })();

    window.App = App;

})( window, document, jQuery );

pessoa.js

;(function (app)
{
    app.controller = "Controllers/Pessoa/";

    var pessoas = app.find('pessoas.json');

    console.log(pessoas);
}(App));

Quando vou analisar no console o resultado de "pessoas.json" .. exibe null .. mas se troco (no app.js) o ajax para async: false ... ele exibe o resultado json normalmente.

 

Onde estou errando na estrutura?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ajax assíncrono não tem retorno.

 

Vc deve trabalhar com promises ou com callbacks. Não é possível ter retorno em ajax assíncrono.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.