取引所のネットワーク原因によるエラーにより,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の後に追加する必要はありません)