BrasilAPI / cep-promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e outros (Node.js e Browser)
MIT License
2.88k stars 316 forks source link

Setar um objeto promise de sua escolha #57

Closed henriquecustodia closed 7 years ago

henriquecustodia commented 8 years ago

Olá, estava dando uma olhada no código e notei que o módulo está usando o bluebird como o fornecedor do objeto Promise. Bom, em meu projeto NodeJS estou usando ES6 (sem usar qualquer transpiler) e assim, estou usando Promise nativa do javascript.

Gostaria de saber se há ou haverá alguma forma de setar esse objeto Promise, ao invés de forçar o uso de um específico (nesse caso o bluebird).

Essa possibilidade já existe no Mongoose, onde podemos setar um objeto promise:

mongoose.Promise = Promise; // Promise do js

Muito bom esse módulo, parabéns!

lucianopf commented 8 years ago

Rapaz, ponto muito bem levantado!!

Na verdade eu to estudando a remoção do bluebird como dependencia e como estamos usando babel podemos migrar integralmente pra ES6 Promise, o problema é que estavamos utilizando o Promise.any do bluebird, que se comporta diferentemente do Promise.race das specs.

Daí achei uma linda magia negra pra isso, mas to alterando algumas estruturas aqui. =D

const reverse = (promise) => new Promise((resolve, reject) => Promise.resolve(promise).then(reject, resolve))
Promise.any = function (iterable) {
    return reverse(Promise.all([...iterable].map(reverse)))
}

Isso vai diminuir dependencias e consequentemente o tamanho final do módulo. (Principalmente pra versão web)

E aí, acha que é o suficiente? @henriquecustodia @filipedeschamps

lucianopf commented 8 years ago

PR com a proposta: #58

henriquecustodia commented 8 years ago

Boa tarde @lucianopf, cara parece uma boa alteração (não tenho um bom conhecimento do módulo :smile:). Porém, seria uma boa começar a usar totalmente a Promise spec e fazer as alterações necessárias em todo código que utiliza o bluebird.

Eu posso contribuir com essa alteração que citei, caso seja realmente necessária. :)

lucianopf commented 8 years ago

@henriquecustodia Manda bala cara!! Se quiser começar do master ou do meu branch fica à vontade mano! :grinning:

henriquecustodia commented 7 years ago

Boa noite :crescent_moon:. Bom, eu comecei a fazer as alterações relacionadas a essa issue, porém vários testes quebraram...porque precisei fazer uma alteração um tanto grande, por causa da remoção do aggregateErrors do bluebird. :disappointed: Então acho melhor deixar com vocês a implementação dessa mudança, que com certeza será melhor implementada.

Obrigado e boa noite.

filipedeschamps commented 7 years ago

Belo trabalho senhores 👍

PR aceito https://github.com/filipedeschamps/cep-promise/pull/58