gpt4 book ai didi

node.js - 如何从 Node js 中的回调函数中中断循环?

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

我在 Node.js 中有异步查询。变量sq3是一个连接变量。例如这样的事情:

for (var i in res) {
if (i == 1) {
sq3.query("SELECT * from students;",

function (err, res) {
if (err) {
throw err;
} else {
if (res.length == 1) {
//do something
} else {
//break for
}
}
});

sq3.end();
}
}

如何中断回调函数?谢谢

最佳答案

就这样做,使用递归而不是循环。这不仅可以让您实现您想要的逻辑。它也不会立即启动一堆异步请求。它们依次执行,但异步执行,因此仍然具有高性能。

function lookatEntireResponse(res) {

function lookAtItemInResponse(item) {
if(item == 1) {
sq3.query("SELECT * from students;",

function(err, res) {
if (err)
{
throw err;
}

else
{
if(res.length==1)
{
doSomething(item);
lookAtItemInResponse(res.shift());
}
else
{
//just don't call the next lookAtItemInResponse function, effectively same thing as "break;"
}

}
});

sq3.end();
} else {
lookAtItemInResponse(res.shift());
}
}

lookAtItemInResponse(res.shift());

}

您可以考虑使用类似的逻辑限制并发请求(例如,每个lookAtItem调用允许10个此类请求。这样您就可以实现两种方法的混合,然后只需优化并发请求的数量以提高性能。异步库使此类事情变得更容易。

关于node.js - 如何从 Node js 中的回调函数中中断循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18358481/

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