No se puede obtener el valor prometedor de ES6 para mostrar en la vista AngularJS

Intento utilizar el JavaScript JavaScript SDK para obtener algunos datos de pin para un proyecto. Tengo un método en un servicio de Pinterest que creé que se llama en mi HomeController. Traté de arrojar la respuesta dentro de una promesa para poder ponerla en el $scope mi HomeController y mostrarla en mi vista. Sin embargo, $ scope.pins no está definido en mi opinión. ¿Por qué no está undefined ? Parece que la promesa está funcionando. Aún estoy aprendiendo promesas.

Servicio de Pinterest

 function getBoardPins (id) { return new Promise(function (resolve, reject) { PDK.request('/v1/boards/' + id + '/pins/', 'GET', {fields: 'id,link,url,creator,board,created_at,note,color,counts,media,attribution,image,metadata'}, function (response) { if (response) { resolve(response); } reject(); }); }); } 

Controlador casero

 Pinterest.getBoardPins('490329546869188172').then(function (response) { $scope.pins = response.data; }); 

Ver

 

Pinterest

{{pin}}

Use $q.when convierta la promesa de ES6 en una promesa de AngularJS:

 $q.when(Pinterest.getBoardPins('490329546869188172')) .then(function (response) { $scope.pins = response.data; }); 

AngularJS modifica el flujo normal de JavaScript al proporcionar su propio ciclo de procesamiento de eventos. Esto divide el JavaScript en el contexto de ejecución clásico y AngularJS. Solo las operaciones que se aplican en el contexto de ejecución de AngularJS se beneficiarán de la vinculación de datos de AngularJS, el manejo de excepciones, la observación de propiedades, etc.

Para llevar una promesa de ES6 al contexto de ejecución de AngularJS, use $q.when .

$ q.when

Encapsula un objeto que podría ser un valor o una promesa de (tercera parte) capaz en una promesa de $q . Esto es útil cuando se trata de un objeto que podría o no ser una promesa, o si la promesa proviene de una fuente en la que no se puede confiar.

– AngularJS $ q Service API Reference – $ q.when


Alternativamente, cree la promesa con el constructor $ q.

 function getBoardPins (id) { //return new Promise(function (resolve, reject) { return $q(function (resolve, reject) { PDK.request('/v1/boards/' + id + '/pins/', 'GET', {fields: 'id,link,url,creator,board,created_at,note,color,counts,media,attribution,image,metadata'}, function (response) { if (response) { resolve(response); } reject(); }); }); } 

Esto crea una promesa que se integra con el marco AngularJS y su ciclo de resumen.

Intereting Posts