gerar-boletos icon indicating copy to clipboard operation
gerar-boletos copied to clipboard

streamToPromise não resolve a Promise

Open valentimaraujo opened this issue 3 years ago • 4 comments

Nos exemplos de uso, na parte do código abaixo:

novoBoleto.pdfFile().then(async ({ stream }) => {
  // ctx.res.set('Content-type', 'application/pdf');	
  await streamToPromise(stream); <<< ==== Não resolve a Promise
}).catch((error) => {
  return error;
});

Se colocarmos algo para aguardar o retorno da Promise: await streamToPromise(stream);, o codigo não ira rodar porque a Promise não esta sendo resolvida, ficando assim aguardando o termino do Promise eternamente. Ex.:

novoBoleto.pdfFile().then(async ({ stream }) => {
  // ctx.res.set('Content-type', 'application/pdf');	
  await streamToPromise(stream);
  fazerQualquerCoisa(); <<<< ==== não vai chamar a função porque a Promise da linha acima não esta sendo resolvida, mesmo o PDF sendo gerado
}).catch((error) => {
  return error;
});

Tentei corrigir mas não tive capacidade de fazer =(

valentimaraujo avatar Feb 26 '21 16:02 valentimaraujo

Olá, também estou tendo esse problema e sem capacidade de ajustar hehe Agradeceria uma ajudinha.

jortrembulak avatar Apr 29 '21 19:04 jortrembulak

Olá, já faz um tempo que essa discurção foi aberta, mas pode servir para futuras implementações. Corrigir esse erro no meu fork, mas esse método de gerar o pdf mudou um pouco.

try {
  novoBoleto.gerarBoleto();
  const stream = await novoBoleto.pdfFile("./tmp", "boleto");

  stream.on("end", () => {
    fazerQualquerCoisa();
  });
} catch (error) {
  throw error;
}

joaoeymard avatar Jul 25 '22 05:07 joaoeymard

@joaoeymard, até tentei utilizar o seu fork, mas após a instalação e execução, recebi o erro abaixo.

image

E este é o código que executei.

Outra pergunta, como posso obter os dados do boleto, incluído a linha digitável após a promise se resolvida ? Onde contem o trecho fazerQualquerCoisa(); ?!!

const { Bancos, Boletos, streamToPromise } = require('../lib/index');

const boleto = {
  banco: new Bancos.Bradesco(),
  ...
};

async function execute() {
  const novoBoleto = new Boletos(boleto);
  try {
    novoBoleto.gerarBoleto();
    const stream = await novoBoleto.pdfFile("./tmp", "boleto");

    stream.on("end", () => {
      console.log('fazerQualquerCoisa')
      //fazerQualquerCoisa();
    });
  } catch (error) {
    console.log(error)
    throw error;
  }
}
execute();

wagnerfillio avatar Jul 26 '22 01:07 wagnerfillio

@wagnerfillio já fiz várias modificações para atender a minha necessidade. Assim pode ser necessário trabalhar diferente de como está na documentação. Estou a disposição para tirar mais dúvidas

joaoeymard avatar Aug 10 '22 02:08 joaoeymard