Os erros causados pela rede de exchanges podem fazer com que a chamada de funções como exchange.GetAccount falhe, então é necessário tentar novamente, mas o código exibido uma vez por cada função é muito pesado.
Esta função é colocada no começo.
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之类好记又短的名子, 这样更方便.
simples-chunHá uma versão PY?
Solorezfunção AssureCall ((method) { Var r; while (!(r = method.apply(this, Array.prototype.slice.call ((argumentos).slice))) { Sleep ((300); Não. return r; Não. função main (() { InitAccount = EnsureCall ((exchange.GetAccount (())); Log (InitAccount); Não. O que você pode fazer é fazer uma ligação para o site do usuário, e você pode fazer uma ligação para o site do usuário.
SolorezEu acho que é melhor que você considere isso quando fizer o seu próximo ap.
SolorezO que é que eu tenho a dizer? https://dn-filebox.qbox.me/bdfed9d5bfd320ceaa06732c84ef0dd1662dc3f8.png
Zero.```EnsureCall ((exchange.GetAccount) ``GetAccount não precisa de ser adicionado após (((