Articles of bluebird

Manipulando várias capturas na cadeia de promises

Eu ainda sou bastante novo para promises e estou usando o bluebird atualmente, no entanto, tenho um cenário em que não tenho certeza de como lidar melhor com ele. Então, por exemplo, eu tenho uma cadeia de promises dentro de um aplicativo expresso assim: repository.Query(getAccountByIdQuery) .catch(function(error){ res.status(404).send({ error: “No account found with this Id” }); […]

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 […]

Qual é o padrão de disposição do promise?

Eu li sobre o padrão de disposição de promise em vários lugares, mas não consigo descobrir o que é. Foi sugerido para mim usá-lo em código que se parece com: function getDb(){ return myDbDriver.getConnection(); } var users = getDb().then(function(conn){ return conn.query(“SELECT name FROM users”).finally(function(users){ conn.release(); }); }); Qual é o padrão de disposição do compromisso […]

Maneira correta de escrever loops para promise.

Como construir corretamente um loop para garantir que a seguinte chamada de promise e o logger.log encadeado (res) sejam executados de forma síncrona por meio da iteração? (pássaro azul) db.getUser(email).then(function(res) { logger.log(res); }); // this is a promise Eu tentei o seguinte caminho (método de http://blog.victorquinn.com/javascript-promise-while-loop ) var Promise = require(‘bluebird’); var promiseWhile = function(condition, […]

Como encadear e compartilhar resultados anteriores com Promises

Estou usando a biblioteca bluebird e preciso fazer uma série de solicitações HTTP e preciso de alguns dos dados de resposta para a próxima solicitação HTTP. Eu construí uma function que lida com meus pedidos chamados callhttp() . Isso leva um URL e o corpo de um POST. Eu estou chamando assim: var payload = […]

Quando então (sucesso, fracasso) é considerado um antipadrão para promises?

Eu tive um olhar para o FAQ promise bluebird , em que menciona que. .then(success, fail) é um antipadrão . Eu não entendo bem sua explicação quanto à tentativa e captura. O que há de errado com isso o seguinte? some_promise_call() .then(function(res) { logger.log(res) }, function(err) { logger.log(err) }) Parece que o exemplo está sugerindo […]

Não são promises apenas callbacks?

Eu venho desenvolvendo JavaScript há alguns anos e não entendo o alarido sobre promises. Parece que tudo que faço é mudar: api(function(result){ api2(function(result2){ api3(function(result3){ // do work }); }); }); Que eu poderia usar uma biblioteca como async para qualquer maneira, com algo como: api().then(function(result){ api2().then(function(result2){ api3().then(function(result3){ // do work }); }); }); Qual é […]

Como faço para converter uma API de retorno de chamada existente em promises?

Quero trabalhar com promises, mas tenho uma API de retorno de chamada em um formato como: 1. Carregamento DOM ou outro evento único: window.onload; // set to callback … window.onload = function(){ }; 2. retorno de chamada simples: function request(onChangeHandler){ … } request(function(){ // change happened … }); 3. Retorno de chamada de estilo de […]

Como faço para acessar resultados de promise anteriores em uma cadeia .then ()?

Eu reestruturei meu código para promises e criei uma cadeia de promises longa e maravilhosa, consistindo em vários callbacks .then() . No final, quero retornar algum valor composto e preciso acessar vários resultados de promises intermediárias . No entanto, os valores de resolução do meio da sequência não estão no escopo no último retorno de […]

Qual é o antipadrão de construção de promise explícita e como evitá-lo?

Eu estava escrevendo código que faz algo parecido com: function getStuffDone(param) { | function getStuffDone(param) { var d = Q.defer(); /* or $q.defer */ | return new Promise(function(resolve, reject) { // or = new $.Deferred() etc. | // using a promise constructor myPromiseFn(param+1) | myPromiseFn(param+1) .then(function(val) { /* or .done */ | .then(function(val) { d.resolve(val); […]