gpt4 book ai didi

Javascript |执行 for 循环的其他方法可能会在成功后中断?

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:45 24 4
gpt4 key购买 nike

所以我试图做一个for循环来获取所有机器人,但是如果我使用for循环,我在成功后无法取消循环,因为我正在使用回调。有没有其他方法可以执行 for 循环,以便我可以在获得成功答案后取消它。我尝试了 return truebreakreturn 其中任何一个都不起作用。

    var myMessages = [];
for(var i = 0; i < bots.length; i++){
if ( bots[i].getInventory().getItems().length < capacity ){
var executed = false;
bots[i].createDeposit({
steamid: req.query.steamid,
token: req.query.token,
itemsFromThem: uniqueItems,
message: req.query.message,
callback: function( err, dbTradeId ){
if ( !executed ){
executed = true;
if ( !err && dbTradeId ){
res.json({ result: 1, dbTradeId: dbTradeId });
} else {
console.log('» Tried to create deposit, but',err);
myMessages.push("Problem");
res.json({ error: err });
}
}
}
});
} else {
console.log('» Tried to create deposit, but no bot found(2)');
myMessages.push("Available bot not found(2)");
}
}
} else {
console.log('» Tried to create deposit, but no bot found');
myMessages.push("Available bot not found");
}
} catch(e){
return res.json({ error: e.message, stack: e.stack });
}
console.log(JSON.stringify( myMessages));

最佳答案

您的问题是循环将在调用第一个回调之前执行所有迭代,因此您无法取消它。指定函数来处理完成后的成功和失败怎么样?

var length = bots.length,
iterator = 0;

checkBot(bots[iterator], done, fail);

function checkBot(bot, done, fail) {
if ( bot.getInventory().getItems().length < capacity ){
var executed = false;
bot.screateDeposit({
steamid: req.query.steamid,
token: req.query.token,
itemsFromThem: uniqueItems,
message: req.query.message,
callback: function( err, dbTradeId ){
if ( !executed ){
executed = true;
if ( !err && dbTradeId ){
done(dbTradeId);
} else {
fail(err);
}
}
}
});
}
}

function done(dbTradeId) {
// Dont continue after success?
res.json({ result: 1, dbTradeId: dbTradeId });
}

function fail(err) {

// res.json({ error: err });

// Check next bot?
if(iterator++ < length){
checkBot(bots[iterator], done, fail);
}
}

关于Javascript |执行 for 循环的其他方法可能会在成功后中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com