Articles of promise

Por que não posso jogar dentro de um manipulador Promise.catch?

Por que não posso simplesmente lançar um Error dentro do retorno de chamada catch e deixar o processo manipular o erro como se estivesse em qualquer outro escopo? Se eu não fizer console.log(err) nada é impresso e não sei nada sobre o que aconteceu. O processo acaba de terminar … Exemplo: function do1() { return […]

Como transformar este callback em uma promise usando async / await?

A seguinte function é obtida e a imagem de uma URL, carrega-a e retorna sua largura e altura: function getImageData (url) { const img = new Image() img.addEventListener(‘load’, function () { return { width: this.naturalWidth, height: this.naturalHeight } }) img.src = url } O problema é, se eu fizer algo assim: ready () { console.log(getImageData(this.url)) […]

Quebre a cadeia de promise e chame uma function baseada na etapa da cadeia onde ela está quebrada (rejeitada)

Atualizar: Para ajudar os futuros espectadores deste post, criei esta demo da resposta da pluma . Questão: Meu objective parece bastante simples. step(1) .then(function() { return step(2); }, function() { stepError(1); return $q.reject(); }) .then(function() { }, function() { stepError(2); }); function step(n) { var deferred = $q.defer(); //fail on step 1 (n === 1) […]

O que $ .when.apply ($, someArray) faz?

Estou lendo sobre Deferreds and Promises e continuo chegando em $.when.apply($, someArray) . Estou um pouco incerto sobre o que isso faz exatamente, procurando uma explicação de que uma linha funciona exatamente (não o trecho inteiro do código). Aqui está um contexto: var data = [1,2,3,4]; // the ids coming back from serviceA var processItemsDeferred […]

Como posso encadear essas funções com promises?

Este é um programa que raspa os dados de um site tshirt e, em seguida, grava as informações do produto em um arquivo CSV. Existem 3 funções de raspar e 1 function de escrita. Agora, estou tendo um pesadelo absoluto tentando entender como implementar promises aqui sem bibliotecas ou pacotes de terceiros. Isso é possível […]

Uma API assíncrona deve ser lançada de forma síncrona?

Estou escrevendo uma function JavaScript que faz uma solicitação HTTP e retorna uma promise para o resultado (mas essa questão se aplica igualmente a uma implementação baseada em retorno de chamada). Se eu souber imediatamente que os argumentos fornecidos para a function são inválidos, a function deve ser throw síncrona ou deve retornar uma promise […]

AngularJS: Onde usar promises?

Eu vi alguns exemplos de serviços de login do Facebook que estavam usando promises para acessar a API do FB Graph. Exemplo 1 : this.api = function(item) { var deferred = $q.defer(); if (item) { facebook.FB.api(‘/’ + item, function (result) { $rootScope.$apply(function () { if (angular.isUndefined(result.error)) { deferred.resolve(result); } else { deferred.reject(result.error); } }); }); […]

Usando transferidor com loops

O índice de loop ( i ) não é o que estou esperando quando uso o transferidor em um loop. Sintomas: Falhou: indexar fora do limite. Tentando acessar o elemento no índice: ‘x’, mas há apenas elementos ‘x’ ou O índice é estático e sempre igual ao último valor Meu código for (var i = […]

Manipulação de exceção assíncrona com promises bluebird

Qual é a melhor maneira de lidar com esse cenário? Eu estou em um ambiente controlado e não quero falhar. var Promise = require(‘bluebird’); function getPromise(){ return new Promise(function(done, reject){ setTimeout(function(){ throw new Error(“AJAJAJA”); }, 500); }); } var p = getPromise(); p.then(function(){ console.log(“Yay”); }).error(function(e){ console.log(“Rejected”,e); }).catch(Error, function(e){ console.log(“Error”,e); }).catch(function(e){ console.log(“Unknown”, e); }); Ao jogar […]

$ .Deferred: Como detectar quando cada promise foi executada

Eu tenho um número de tarefas assíncronas que precisam ser concluídas, então estou usando promises. Preciso detectar quando cada uma das promises foi executada (ambas resolvidas e rejeitadas). Eu não devo continuar a execução até esse ponto. Eu estava usando algo assim: $.when(promise1, promise2, …).always(); Mas esse código está errado, porque o método when tem […]