关于下面的代码,我的目标是打破FOR LOOP B并继续使用FOR LOOP A,但是在回调函数中。
for(var a of arrA) {
// ...
// ...
for(var b of arrB) {
// ...
// ...
PartService.getPart(a.id, function(err, returnObj) {
break;
});
}
}
这会给我我想要的结果吗?如果没有,我怎么能实现这个目标?
EDIT 4/28/16 3:28 MST
基于下面的一个答案和所有评论,在不改变问题范围的情况下,此时最好的问题可能是“如何在Node.js中实现同步回调函数?”。我正在考虑重构我的代码,以便删除for循环,但我仍然很好奇,如果我仍然可以使用同步回调函数朝这个方向前进。我知道Underscore.js使用同步回调函数,但我不知道如何实现它们。
答案 0 :(得分:2)
您可以尝试这样的方法,但只有在同步触发回调时它才会起作用。
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;
});
答案 1 :(得分:0)
这可能不会给您预期的结果。您可以使用事件EventEmitter或async模块。