javascript - 如何在 Javascript 循环中触发的回调函数中抛出一次错误?

标签 javascript loops callback throw

我需要遍历一组对象并检查回调函数中的值。我的问题是,如果找不到该值,我需要抛出一个错误,所以这需要在回调和循环之外。

现在我有这个:

for (i = 0; i < response._conflicts.length; i += 1){
    del_rev = response._conflicts[i];
        // retrieve a document
        that.addJob( 
            "get",
            someID,
            options,
            // callback
            function (response) {
                if (condition 1) {
                    if (condition 2){
                        console.log("gotcha");
                        // run a function                    
                        f.removeDocument(someID+x);
                        return;
                    }
                } 
            },
            function (err) {
                that.error({ "status": 123 });
            }
        );
    } // end of loop

    // now if the loop turns out no results, I need to throw this error
    that.error({ "status": 404 });
    return;

我的问题是,第二个 404 错误在我的回调检查可以检测是否满足条件之前触发,所以我总是以 404 结束和第二个函数触发,一旦满足条件,我的 f.removeDocument(someID+x) 触发。

我尝试从回调和循环中删除 f.removeDocument(someID+x) 并仅将变量设置为 true/false,然后抛出我的错误或调用我的函数。但是,相同的结果 = 变量为 false 并在回调中将其设置为 true 之前抛出错误。

我想我需要将我的 404 错误放在循环和回调中,但我不知道如何确保它只在循环完成且条件尚未完成时触发一次被遇见。

问题:
如何在循环触发的回调函数中抛出 ONCE 错误?

最佳答案

这看起来像是一个异步问题。要将回调作为一种连接操作来处理,您需要等待最后一个回调。像这样的模式可能会有所帮助:

var join = (function(n, fn) {
  return function() {
    if(--n === 0) {
      fn();
    }
  }
}) (response._conflicts.length, function() {
  // Check the conditions
});

join 函数将倒计时所需的次数,然后允许您在最后一次调用完成后执行剩余的检查。您需要在请求回调中触发 join()

关于javascript - 如何在 Javascript 循环中触发的回调函数中抛出一次错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158725/

相关文章:

javascript - 使用 Mobx 在其他函数内调用函数

javascript - 获取 JSON 对象数组中的值

javascript - Node.js 上的异步问题

java - 用for循环返回

javascript - 如何使用 JavaScript/jQuery 迭代 SelectListItem?

javascript - Yii 如何要求用户在 CStarRating 中确认他的选择

mysql - Node.js mysql回调错误

javascript - 使用 facebook 登录,无需任何phonegap 插件

javascript - PhoneGap - 打开外部应用程序

javascript - 为什么 Visual Studio intellisense 不显示 XMLHttpRequest 对象方法?