Algunos trucos para volver a probar el mal envase

El autor:No hay nada, Creado: 2015-07-20 22:01:59, Actualizado: 2015-07-20 22:06:32

Los errores causados por la red de los intercambios pueden hacer que una llamada a una función como exchange.GetAccount falle, en este caso se debe volver a intentar, pero el código que aparece una vez en cada función es demasiado confuso. Se puede resolver así:

Esta función se pone al principio.

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之类好记又短的名子, 这样更方便.

Más.

el simple-chun¿Tiene una versión PY?

sólozFunción de seguridad de llamada (método) { ¿Qué es esto? mientras (!(r = method.apply ((this, Array.prototype.slice.call ((arguments).slice))) { ¿Qué es lo que está pasando? ¿Por qué no? ¿Cómo se hace esto? ¿Por qué no? La función principal (() { InitAccount = EnsureCall ((exchange.GetAccount (())); el nombre de la cuenta es InitAccount. Log (InitAccount); ¿Por qué no? En el caso de las llamadas anteriores, se producen errores.

sólozCreo que es mejor que lo tengas en cuenta cuando hagas tu próxima API.

sóloz¿Ha probado Dios? ¿Por qué cuando lo uso, aparece este error: En la actualidad, la mayoría de los archivos están en manos de personas que no son miembros de la familia.

No hay nada```EnsureCall ((exchange.GetAccount) ``GetAccount no se debe añadir después de (((