如果存在错误而不重写它,如何重新执行代码零件



在我的代码中,我拨打了一些API调用,有时1返回错误,但是如果我在工作后重新播放它(我真的不知道有什么问题,也许是JSON我发布的未完成或我不知道...)

为了使我编码:

 HTTP.call("POST", "http://localhost:3000/api/dashboards/db", {
                    headers: {
                        'Accept': 'application/json',
                        'Content-Type': 'application/json',
                        'Authorization': APIKEY,
                    },
                    data: {
                        dashboard: dataJSON,
                        overwrite: true
                    }
                },
                function(error, result) {
                    if (!error) {
                        console.error("result post dataJSON --------------------OK------------")
                    } else {
                        console.log("error post dataJSON  --------------------KO------------")

                        HTTP.call("POST", "http://localhost:3000/api/dashboards/db", {
                                headers: {
                                    'Accept': 'application/json',
                                    'Content-Type': 'application/json',
                                    'Authorization': APIKEY,
                                },
                                data: {
                                    dashboard: dataJSON,
                                    overwrite: true
                                }
                            },
                            function(error, result) {
                                if (!error) {
                                    console.error("result post dataJSON at the 2nd time --------------------OK------------")
                                } else {
                                    console.log("error post dataJSON  at the 2nd time --------------------KO------------")
                                }
                            });
                    }

但是,我认为做这样的事情是非常丑陋的,这是在发生错误时回忆代码部分的一种方式吗?

好吧,我的第一个建议是了解为什么通话第一次失败,看看是否可以修复。

排除在内,这取决于您计划使用数据等,例如,您可以将HTTP调用隔离在函数中,并以相同的参数回忆函数。

function callAPIwithData(myData) {
    HTTP.call("POST", "http://localhost:3000/api/dashboards/db", {
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Authorization': APIKEY,
        },
        data: myData
    },
    function(error, result) {
        if (!error) {
            console.error("OK: result post dataJSON")
        } else {
            console.log("KO: error post dataJSON")
            console.log("retrying ...")
            callAPIWithData(myData);
        }
    });
}

当然,这需要一组检查和余额,这样它就不会被卡住在Casa中的Infinity中,但您明白了。

最新更新