2

重複の可能性:
JavaScript非同期コールバックでスローされた例外をキャッチすることは可能ですか?

私はデータベースから注文を引き出してからリクエストしています。を破ることができるようにしたいのですが、それをaで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
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 に答える