誤った包装を試すためのヒント

作者: リン・ハーンゼロ作成日:2015年7月20日 22:01:59 更新日:2015年7月20日 22:06:32

取引所のネットワーク原因によるエラーにより,exchange.GetAccountのような関数の呼び出しが失敗し,再試行が必要となるが,各関数の再試行が表示されるコードがあまりにも難解であるため,以下のように解決できる.

この関数は,この関数から始めます.


function EnsureCall(method) {
    var r;
    while (!(r = method.apply(this, Array.prototype.slice.call(arguments).slice(1)))) {
        Sleep(300);
    }
    return r;
}
銀行口座の情報を取得すると,var account = EnsureCall(exchange.GetAccount);深いところを掘り下げますvar depth = EnsureCall(exchange.GetDepth);参数を入力するには,var records = EnsureCall(exchange.GetRecords, PERIOD_M5);この方法により,取引所のネットワークが不安定であっても,EnsureCallは有効なデータのみを再試し,エラーを容認するために各関数を一度にパッケージ化する必要はありません.

もちろん,EnsureCallの名前を ECやCallのような覚えやすい短く名前の名前に変えることもできます.


もっと見る

シンプル・チュンこのPY版はありますか?

ソロレスこの関数では, ワール while (!(r = method.apply ((this, Array.prototype.slice.call ((arguments).slice ((1))) { スリープ ((300); ありがとうございました. 返回する ありがとうございました. main ((() {の関数について InitAccount = EnsureCall ((exchange.GetAccount ((()))); 確認する ログ (InitAccount); ありがとうございました. 上のような呼び出しでエラーが発生します.

ソロレスこの問題について,私は,あなたが次のAPIをするときに,この容認を考慮に入れる方が良いと思います.

ソロレス試した? なぜ私が使ったときにこのエラーが表示されるのか? https://dn-filebox.qbox.me/bdfed9d5bfd320ceaa06732c84ef0dd1662dc3f8.png

ゼロ```EnsureCall ((exchange.GetAccount) ``GetAccountの後に追加する必要はありません)