Передача/возврат результата функции обратного вызова

Я думаю, что столкнулся с проблемой обратного вызова, поскольку возвращаемый результат говорит о неопределенном (несмотря на правильное отображение в журнале консоли).

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

В настоящее время я не могу передать результат обратного вызова другой функции/переменной. Пожалуйста помогите. Спасибо.

какая у вас проблема/ошибка? вы, кажется, получаете returnрезультат и никуда его не передаете
попробуйте предупреждение (результат), чтобы увидеть, правильно ли оно появляется
я получаю undefined в консоли, и если я предупрежу его.
Вы включили web3.js или MetaMask-injected?<script src="https://unpkg.com/web3@1.0.0-beta.27/src/index.js"></script>

Ответы (1)

Это обычная путаница для новых разработчиков JavaScript. Если вы хотите перейти resultк чему-то другому, вам нужно вызвать другую функцию. Например:

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

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

В настоящее время вы просто returning result, что просто означает, что он возвращается вызывающей стороне вашего обратного вызова web3.eth.getBlockNumber(и он вообще не ожидает возвращаемого значения от обратного вызова, поэтому игнорирует его).

хорошо, но какое решение?
Я не уверен, что вы спрашиваете. Мой ответ включает рабочий код.