거래소 네트워크로 인한 오류로 인해 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之类好记又短的名子, 这样更方便.