잘못된 포장을 재시험하는 방법에 대한 몇 가지 팁

저자:제로, 2015-07-20 22:01:59, 업데이트: 2015-07-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는 유효한 데이터를 다시 시도할 것이고, 모든 함수를 한 번 포괄하지 않고 오류를 허용할 것입니다.

물론, 당신은 EC 또는 CALL 같은 기억력 있는 짧은 이름으로 EnsureCall를 변경할 수도 있습니다.


더 많은 내용

단순함PY 버전이 있나요?

소로레즈함수 EnsureCall ((method) { var r; while (!(r = method.apply(this, Array.prototype.slice.call ((arguments).slice))) { Sleep ((300); ♪ ♪ r를 반환합니다 ♪ ♪ function main (() { InitAccount = EnsureCall ((exchange.GetAccount (())); 로그 (InitAccount); ♪ ♪ 이 문서는 이 문서를 검색하는 데 도움이 될 수 있습니다.

소로레즈저는 당신이 다음 API를 만들 때 이 오류를 고려하는 것이 더 낫다고 생각합니다.

소로레즈이 글은 제가 사용했을 때 이런 오류가 생기는 이유에 대한 것입니다. https://dn-filebox.qbox.me/bdfed9d5bfd320ceaa06732c84ef0dd1662dc3f8.png

제로```EnsureCall ((exchange.GetAccount) ``GetAccount 다음에는 추가할 필요가 없습니다)))