В nodejs, как использовать async / await вместо выполнения обещаний через «затем» в транзакциях? - PullRequest
1 голос
/ 06 августа 2020

Вот код транзакции, где я использую обещания и метод then. Используя обещание / then для разрешения обещаний, я попытался использовать в этом случае ожидание, но это дает мне ошибку, что "ожидание" является зарезервированным словом. например:

const deleteNetValues =await this.deleteNet(aId, conn);

Как мы можем использовать asyn c -await в этом коде? Я хочу избавиться от then.

Мы будем очень признательны за ваш ответ.

Вот код:

   return new Promise(function (resolve, reject) {
  try {


    conn.beginTransaction(function (err) {
      if (err) {
        let res = { "success": false, "message": err.message }
        resolve(res);
        return false;
      }

    
    

      const aDetails = checkADetails(aId, conn).then(result => {
    

        if (result.length > 0) {
          const updateAsset = updateAssetDetails(
            given_name,
            location,
            desc,
            aId, conn)
        }
      
      });


      conn.commit(function (err) {
        if (err) {
          conn.rollback(function () {
            console.log(err)
            let res = { "success": false, "message": err.message }
            resolve(res)
            return false
          });
        }
        console.log('Transaction Complete.');
        conn.end();

      });

      const res = { "success": true, "message": "Net  details updated successfully" };
      resolve(res);
    });
  } catch (e) {
    console.log(e)
    return (e);
  }
})

1 Ответ

1 голос
/ 06 августа 2020

Чтобы использовать Await, вам необходимо быть в функции Asyn c

conn.beginTransaction(async function (err) {
  if (err) {
    let res = { "success": false, "message": err.message }
    resolve(res);
    return false;
  }


  const deleteNetValues = await deleteNet(aId, conn);
  let netData= someData;
  netData.forEach( netAddress => 
  {
   const inserNet = inserteNetValue(netAddress, aId, conn);
  });

 //delete all dn

  const deleteDNvalues = deleteDN(aId, conn);

  let dnData = nameDescData;
  dnsData.forEach( dnAddress => {
   const addDNvalues = insertDNValue(dnAddress, aId, conn);
  });


  const aDetails = checkADetails(aId, conn).then(result => {


    if (result.length > 0) {
      const updateAsset = updateAssetDetails(
        given_name,
        location,
        desc,
        aId, conn)
    }
  
  });


  conn.commit(function (err) {
    if (err) {
      conn.rollback(function () {
        console.log(err)
        let res = { "success": false, "message": err.message }
        resolve(res)
        return false
      });
    }
    console.log('Transaction Complete.');
    conn.end();

  });

  const res = { "success": true, "message": "Net  details updated successfully" };
  resolve(res);
});

Дополнительная информация https://javascript.info/async-await#await

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...