在 nodejs 中,如何在交易中使用 async/await 而不是通过 ''then' 解决承诺?
In nodejs ,how to use async/await instead of resolve promises through ''then" in transactions?
这是交易代码,我在其中使用了 promises 和 then
方法。
使用 promise/then 来解决承诺,我试图在此使用等待,但它给了我一个错误,“等待”是一个保留字。
例如:
const deleteNetValues =await this.deleteNet(aId, conn);
我们如何在这段代码中使用异步等待?我想摆脱 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);
}
})
要使用 Await,您需要处于异步函数中
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);
});
这是交易代码,我在其中使用了 promises 和 then
方法。
使用 promise/then 来解决承诺,我试图在此使用等待,但它给了我一个错误,“等待”是一个保留字。
例如:
const deleteNetValues =await this.deleteNet(aId, conn);
我们如何在这段代码中使用异步等待?我想摆脱 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);
}
})
要使用 Await,您需要处于异步函数中
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);
});