Cloud47
@Cloud47
Frontend, javascript, HTML, CSS

Как правильно использовать промисы на примере?

Здравствуйте. Нужна ваша помощь с пониманием того, как работают промисы. До этого использовал коллбэки.
В нижеприведенном коде, вызывая второй по счету метод плагина с использованием коллбеков, я получал нужный мне ответ, а с промисами я получаю ответ, который формируется из запроса Extension.curNet(), вместо нужного мне ответа из запроса метода Extension.sendTransaction({}).Почему так происходит и что нужно поменять в коде, либо не хватает??
function StartGame() {

        Extension.curNet().then(r => { //метод-1 получаем в r.result нужную сеть ('Network', 'testnet', 'DevsTestnet'), которую выбрали в плагине

            if (r.result == 'Network')
                targetNet = 'DidUHauNjoW6ERczNLe9gbCqGMUnsmp2iAc5j6HRMA2X';
                if (r.result == 'testnet')
                    targetNet = 'GVNmo9FZGJcvY1c6dfAh5NTUAVDNyNwv2isYjp5PPKGc';
                if (r.result == 'DevsTestnet')
                    targetNet = 'Cxn3eaLNmu3ZmkHQ6skLAFeoMWYXJc5LrfGtJ3GaU3tv';

    
            //Новая игра. Первый раунд
            if (currBattle == null) {
                //PAYABLE method
                Extension.sendTransaction({
                    target: targetNet,
                    amount: $("#bet").val(),
                    fee: "0.01"
                }).then(r => { //метод-2 здесь в r.result вместо json-строки получаю результат, будто бы опять был вызван метод получения текущей сети  
                    if(r.result === undefined)
                    {
                        if (r.message !== "Site not approved") {
                            Swal.fire(r.message);
                        }
                        return;
                    }
                    console.log(r);
                    count = 0;
                    $("#start").attr("disabled", "disabled");  
                    $("#start").addClass('disable'); 
                    $("#bullet1").attr('src', 'img/bullet--dark.png');

                    $("#nextRound").removeAttr("disabled", "disabled");  
                    $("#nextRound").removeClass('disable'); 

                    $("#stopGame").removeAttr("disabled", "disabled");  
                    $("#stopGame").removeClass('disable');

                });
            }
}
);
}
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 1
@grinat
Плохо понял что надо,, но подозреваю что так
async function StartGame() {
   const r = await Extension.curNet()
   ....
  if (currBattle == null) {
      const sendRes = await Extension.sendTransaction
  }

  retrun  sendRes
}
Или
function StartGame() {
    return Extension.curNet().then(r => { 
     ...
    return Extension.sendTransaction
   }).then(r => {
      retrun r
   })
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы