错误处理try&catch+回调

Error-handling try & catch + callback?

本文关键字:catch+ 回调 amp 处理 try 错误      更新时间:2023-09-26

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

我从数据库中提取订单,然后请求,我希望能够打破forEach,我可以用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

您需要在回调函数中添加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");
            }
        }
    });
});