Como bloquear uma promessa de javascript e retornar o resultado resolvido? [duplicado]
Esta pergunta já tem uma resposta aqui:
Como faço para retornar a resposta de uma chamada assíncrona? 33 respostasObviamente, estou entendendo mal algo sobre como as promessas de js são resolvidas ou sobre a semântica do "retorno".
Estou sendo chamado por uma função que espera que eu seja síncrono - para retornar um valor. O cálculo desse valor requer algum código assíncrono (especificamente, o método ForEach em umColeção dstore
O que estou tentando realizar é aproximadamente isso, mas isso não funciona, pois a função mySynchronousFunction não tem valor de retorno.
function mySynchronousFunction() {
var accumulator = {};
var myPromise = doAsynchronousThingThatSideEffectsAccumulator();
// Now my caller is expecting the value of accumulator.
myPromise.then(function() {return accumulator;})
}
Entendo que o JS precisa permitir implementações de thread único, para que não seja legal bloquear, mas deve haver algum padrão para colar código assíncrono a síncrono, que acabei de perder.