2017-02-17 9 views
0

私のコードでは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------------") 
           } 
          }); 
        } 

をしかし、それはこのようなものを作ることは非常に醜いです:「Tは、だから私はコード化されていることを確認するために)...

を知っていますエラー ?

答えて

1

私の最初の提案は、呼び出しが初めて失敗した理由を理解し、修正できるかどうかを確認することです。

これを除いて、データなどの使用を予定していますが、たとえば、関数内で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); 
     } 
    }); 

} 

それが壊れて何か他のものだが、あなたのアイデアを得るカサに無限大にこだわっ再しようとして得ることはありませんので、これはチェック・アンド・バランスのセットが必要になります。

+0

はいこれは非常に良いアイデアです! – Jerome

+0

もし興味があれば、私はvar 'limit'を設定しました。私は単に' if'を使って無限の再試行を避けます。 – Jerome

関連する問題