Type/to search
6
Follow
968
Followers
ফল্ট-সহনশীল এনক্যাপসুলেশন পুনরায় চেষ্টা করার কিছু টিপস
FAQ
Created 2015-07-20 22:01:59  Updated 2015-07-20 22:06:32
 5
 2748

এক্সচেঞ্জ নেটওয়ার্কের কারণে ত্রুটিগুলি যেমন এক্সচেঞ্জ.গেটঅ্যাকাউন্টের মতো ফাংশন কল ব্যর্থ হতে পারে, যখন এটি পুনরায় চেষ্টা করা প্রয়োজন, তবে প্রতিটি ফাংশন পুনরায় চেষ্টা করে এবং প্রদর্শিত কোডটি খুব বিরক্তিকর, এটি সমাধান করা যেতে পারেঃ

এই ফাংশনটি শুরুতে আছে।

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之类好记又短的名子, 这样更方便.
Related Recommendations
Comment
All comments (5)

    请问这个有PY版本吗?

    9 years ago

    function EnsureCall(method) {
    var r;
    while (!(r = method.apply(this, Array.prototype.slice.call(arguments).slice(1)))) {
    Sleep(300);
    }
    return r;
    }
    function main() {
    InitAccount = EnsureCall(exchange.GetAccount());
    Log(InitAccount);
    }

    像上面这种调用,就会出现错误。

    11 years ago

    EnsureCall(exchange.GetAccount) GetAccount后面不用加()

    11 years ago

    我觉得你再做api的时候,把这个容错考虑进去最好。

    11 years ago

    大神测试过了吗?为什么我用的时候,出现这个错误:
    img

    11 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)