varios promesas otro llamar funcion ejemplos controladores controlador angularjs coffeescript jsonp

promesas - angularjs-HTTPpromise no se ejecuta cuando se devuelve JSONP



promise angularjs (1)

No escribo coffeescript, así que lo traduje a javascript. Se olvidó de inyectar el servicio $location , aparte de eso, simplemente reemplacé la callback=stock_quote_callback por callback=JSON_CALLBACK y creé un plunker que funciona perfectamente: http://run.plnkr.co/hCAdohIJIr9Odn3m/ (fuente: http: / /plnkr.co/edit/a7C6k0QVoXnaTyImSUkb?p=preview ).

angular.module(''Services'').service(''StockSupplier'', function($http,$location) { var get_stock; get_stock = function(symbol) { var q, url; q = ''select * from yahoo.finance.quotes where symbol in ("'' + symbol + ''")&''+ ''format=json&''+ ''diagnostics=true&''+ ''env=http://datatables.org/alltables.env&''+ ''callback=JSON_CALLBACK ''; url = ''http://query.yahooapis.com/v1/public/yql?q='' + q; return $http.jsonp(url).then(function(data) { alert(''This should pop up when result returns''); $location.path( ''/stocks/show_stock'' ); }); }; return { get_stock: function(symbol) { return get_stock(symbol); } }; });

Estoy tratando de obtener una cotización de acciones de la API de Yahoo y estoy usando el método $ http.jsonp de angular. El objetivo es cuando el resultado regrese, para que la aplicación vaya a esta ruta: ''/ stocks / show_stock''. Intento hacerlo de dos maneras y ninguna de las dos funciona 1) Puse la declaración:

window.location = ''/stocks/show_stock''

en la función de devolución de llamada que envuelve la respuesta JSONP 2) Puse la declaración:

$location.path ''/stocks/show_stock''

en la devolución de llamada HTTPpromise. (ver los comentarios en el código)

Aquí está mi código (en coffescript):

#THIS IS THE CALLBACK FUNCTION THAT I SEND WITH THE JSONP REQUEST window.stock_quote_callback = (data)-> console.log data #THIS WORKS AND I CAN SEE THE DATA RETURNED FROM YAHOO window.stock_quote_result = data.results alert ''I am in the callback'' #THE STATEMENT BELOW DOES NOT WORK EVEN THOUGH I CAN SEE THE ALERT ABOVE window.location = ''/stocks/show_stock'' angular.module(''Services'').service ''StockSupplier'', ($http)-> get_stock = (symbol)-> q = ''select * from yahoo.finance.quotes where symbol in ("''+symbol+''") &format=json& diagnostics=true& env=http://datatables.org/alltables.env& callback=stock_quote_callback'' url = ''http://query.yahooapis.com/v1/public/yql?q=''+q $http.jsonp(url).then (data)-> #THE CODE BELOW NEVER EXECUTES EVEN THOUGH RESULT IS RETURNED alert ''This should pop up when result returns'' $location.path''/stocks/show_stock'' { get_stock: (symbol)-> get_stock(symbol) }

Gracias de antemano.