如何正确制作多个 'if' 语句 (node.js)
How to make multiple 'if' statements correctly (node.js)
我有这个 try 语句,我想用更多的 if 更新它,让它再尝试 2 次,然后最终拒绝这个提议。我没有成功。我不知道如何正确地做它们。有谁知道之后如何修改我的陈述?
(作品)之前的声明
try {
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer ' + offer.tradeofferid, 891, err);
offers.declineOffer({tradeOfferId: offer.tradeofferid}, function() {
currentGameOffers.splice(currentGameOffers.indexOf(offer.tradeofferid), 1);
});
return;
}
之后的声明(不工作)
try {
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 1st try' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 2nd try ' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 3rd try ' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Offer declined: failed 3 times ' + offer.tradeofferid, 891, err);
offers.declineOffer({tradeOfferId: offer.tradeofferid}, function() {
currentGameOffers.splice(currentGameOffers.indexOf(offer.tradeofferid), 1);
});
return;
}
该代码看起来难以阅读和维护。它可能有效,但正如您所说,再添加几张支票是一场噩梦。
看看异步库,即the retry function
现在你的代码看起来像这样:
(代码未经测试)
async.retry(3, function( retryCb, prevResult){
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, retryCb);
}, function(err, result) {
if( err){
//decline offer
}
// do something with the result
});
现在可以轻松添加更多检查、更改延迟等。感谢您帮助控制流程,异步! :)
我有这个 try 语句,我想用更多的 if 更新它,让它再尝试 2 次,然后最终拒绝这个提议。我没有成功。我不知道如何正确地做它们。有谁知道之后如何修改我的陈述?
(作品)之前的声明
try {
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer ' + offer.tradeofferid, 891, err);
offers.declineOffer({tradeOfferId: offer.tradeofferid}, function() {
currentGameOffers.splice(currentGameOffers.indexOf(offer.tradeofferid), 1);
});
return;
}
之后的声明(不工作)
try {
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 1st try' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 2nd try ' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Error accepting trade offer: 3rd try ' + offer.tradeofferid, 891, err);
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, function(err, log) {
if (err) {
helper.log('Offer declined: failed 3 times ' + offer.tradeofferid, 891, err);
offers.declineOffer({tradeOfferId: offer.tradeofferid}, function() {
currentGameOffers.splice(currentGameOffers.indexOf(offer.tradeofferid), 1);
});
return;
}
该代码看起来难以阅读和维护。它可能有效,但正如您所说,再添加几张支票是一场噩梦。
看看异步库,即the retry function
现在你的代码看起来像这样: (代码未经测试)
async.retry(3, function( retryCb, prevResult){
offers.acceptOffer({tradeOfferId: offer.tradeofferid}, retryCb);
}, function(err, result) {
if( err){
//decline offer
}
// do something with the result
});
现在可以轻松添加更多检查、更改延迟等。感谢您帮助控制流程,异步! :)