Executando verificação de segurança...
1

Dúvida sobre resolução de promises JS

Fala galera, blz?

Gente, pode ser duvida besta mas...
Se uma função a() é chamada e retorna uma promessa, mas antes disso ela também salva uma "cópia" desta mesma promessa em um objeto chamado hooks e guarda os argumentos em um segundo objeto chamado buffer. Cada promise em hooks e entradas no buffer possuem um hash como id que as relacionam.

Quando buffer tem um número X de entradas, ou passa um determinado tempo...

uma função b() faz um ajax por fetch pedindo por uma manipulação de cada entrada no buffer. Então recebe todas as respostas de uma api de uma unica vez. Devendo encaminhar cada resposta referente a uma entrada no buffer resolvendo a respectiva promise do hooks, que em minha cabeça resultaria em cada promise original das chamadas feitas para a() serem resolvidas uma a uma.

Porém não estou conseguindo lhe dar com isso, e ja até apelei para o chat GPT kkkkk
Em resumo, uma função pode resolver promises feitas por uma outra função?

Carregando publicação patrocinada...
3

Caso a ideia seja preparar promises para resolver depois, por que nao colocar as promises dentro de um array e depois dar um Promise.All? Caso isso seja em diferentes requets, vc pode montar um objeto fnProperties, para salvar os parametros e um identificador de qual funcao chamar, depois quando precisar montar a promise e colocar dentro de um array e usar Promise.All para resolver.

1

Oi Carlos, obrigado pela dica!

Então, a ideia é resolver todas as chamadas da função a() com apenas uma request à api.

de fato, hooks é um objeto que tem todas as chamadas pendentes {id:promiseId, ...} que pode retornar o array para usar o .all, o que eu não fiz.

buffer tem estrutura semelhante,
{id: "argumentosParaConsulta", ...}

A função b(), quando acionada, pega os dados do buffer e faz esse fetch. Recebendo um JSON com todas as informações processadas e deveria usar ele para identificar qual informação é referente a qual promises e resolver todas.

Porém quando tento resolver as promises dentro de b() por um loop, pegando os identificadores e consultando hooks[id].resolve (valor) não da certo... retorna que resolve não é uma função ou erro diferente.

Não sei como o Promises.All poderia me ajudar neste caso.

1

Mas vc tem que montar a promise com od dados e chamar a promise, ou salvar os resultados da promise que vc chamou antes e quando resolvida. Nao estou entendendo qual problema vc quer resolver, digo nao entendo o contexto. por que nao chamar a promise na request e salvar os dados no DB?