2

可能重复:
是否可以捕获 JavaScript 异步回调中抛出的异常?

我正在从数据库中提取订单,然后请求,我希望能够打破forEach并且我可以用 a 来做到这一点,trycatch我认为回调不起作用

try{
    orders.find().forEach(function(order){
        request({
            "method":"get",
            "json":true
        },function (error, response, data){
            if (!error && response.statusCode == 200) {
                console.log("Order id "+order.id);
            }else{
                throw "limit";
            }
        });
    });
}catch(err){
    if(err == "limit"){
        console.log("error occured");
    }
}

这就是我得到的

    /Users/thomas/Desktop/forerunner/retrieveTransactions.js:120
                throw "limit";
                ^
    limit

我只是想:

    error occured
4

1 回答 1

9

您需要在回调函数中添加 try-catch,例如:

orders.find().forEach(function(order){
    request({
        "method":"get",
        "json":truetry{
    },function (error, response, data){
        try{
            if (!error && response.statusCode == 200) {
                console.log("Order id "+order.id);
            }else{
              throw "limit";
            }
        }catch(err){
            if(err == "limit"){
                console.log("error occured");
            }
        }
    });
});
于 2012-08-30T18:35:48.720 回答