Pasar/devolver el resultado de la función de devolución de llamada

Creo que me estoy encontrando con un problema de devolución de llamada, ya que devolver el resultado dice indefinido (a pesar de que se muestra correctamente en el registro de la consola).

web3.eth.getBlockNumber(function(error, result){
    if(!error)
    {
        console.log(result)
        return result
    }
    else
    {
        console.error(error);
        alert(error)
    }
})

No puedo pasar el resultado de la devolución de llamada a otra función/variable actualmente. Por favor asiste. Gracias.

que problema/error tienes? parece que estás returnviendo el resultado y no pasándolo a ninguna parte
intente alerta (resultado) para ver si aparece correctamente
Me estoy quedando indefinido en la consola y si lo alerto.
¿Ha incluido web3.js o MetaMask inyectado?<script src="https://unpkg.com/web3@1.0.0-beta.27/src/index.js"></script>

Respuestas (1)

Este es un punto común de confusión para los nuevos desarrolladores de JavaScript. Si desea pasar resulta otra cosa, debe llamar a otra función. P.ej:

web3.eth.getBlockNumber(function (error, result) {
  otherFunction(result);
});

function otherFunction(result) {
  console.log("In otherFunction with: " + result);
}

Actualmente, solo está returning result, lo que significa que se devuelve a la persona que llama de su devolución de llamada, que es web3.eth.getBlockNumber(y no espera un valor de retorno de la devolución de llamada, por lo que lo ignora).

ok, pero cual es la solucion?
No estoy seguro de lo que estás preguntando. Mi respuesta incluye código de trabajo.