在 Node.js 中脱离回调函数中的“for”循环
Break out of a "for" loop within a callback function, in Node.js
关于下面的代码,我的目标是突破 FOR 循环 B 并继续使用 FOR 循环 A,但在回调函数中。
for(var a of arrA) {
// ...
// ...
for(var b of arrB) {
// ...
// ...
PartService.getPart(a.id, function(err, returnObj) {
break;
});
}
}
这会给我带来我想要的结果吗?如果没有,我该如何实现?
编辑 16-4-28 3:28 MST
- 回调函数确实是异步的
根据其中一个答案和下面的所有评论,在不改变问题范围的情况下,也许此时最好的问题是"如何在 Node.js 中实现同步回调函数?我正在考虑重构我的代码以删除 for 循环,但我仍然很好奇我是否仍然可以使用同步回调函数朝这个方向发展。我知道 Underscore.js 使用同步回调函数,但我不知道如何实现它们。
您可以尝试这样的事情,但是它仅在同步触发回调时才有效。
for(var a of arrA) {
let shouldBreak = false;
for(var b of arrB) {
if (shouldBreak)
break;
// rest of code
PartService.getPart(a.id, function(err, returnObj) { // when the callback is called immediately it will work, if it's called later, it's unlikely to work
shouldBreak = true;
});
这可能不会给你预期的结果。 您可以使用事件事件发射器或异步模块。
您也可以尝试让它在没有for
循环的情况下自行循环。使其异步。
for (var a of arrA) {
var _loop = function(i) {
// Make modifications to arrB
PartService.getPart(id, function(err, retObj) {
if (err) {
throw err;
}
if (retObj.success) {
// If successful, call function again
_loop(i + 1);
} else {
// We've broken out of the loop
}
});
};
// Instantiate loop
_loop(0);
}
相关文章:
- 类型error primeFactors.for不是函数
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- 使用for循环从Javascript中的函数返回多个值
- For循环在Javascript函数中无法正常工作
- JavaScript/Jquery:一个特殊用途的for循环函数
- 函数式编程 - 用于递增计数器的简单 for 循环
- for循环中的jQuery函数
- 将for循环的值赋给函数d3
- 使用函数for循环遍历对象以更改值,然后返回结果
- 在 Node.js 中脱离回调函数中的“for”循环
- JavaScript + mocha:可能是在 for 循环中声明函数的闭包问题
- Javascript破坏了回调函数内部的for循环
- 如何在for循环中调用函数
- 函数式编程 - .bind.apply for curry function.
- 在for循环中创建函数
- JS For循环在调用函数后提前停止
- Javascript:connection.query函数正在破坏我的for循环
- 在react for标记名称中抛出一个函数,以及如何调试该函数
- 如何在新函数上返回For函数
- Sinon spy for函数不起作用