गलत पैकेजिंग के बारे में कुछ युक्तियाँ

लेखक:शून्य, बनाया गयाः 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 या कॉल जैसे यादगार और संक्षिप्त नाम, जो अधिक सुविधाजनक है।


अधिक जानकारी

सरल-चुनक्या यह पीवाई संस्करण है?

सोलोरेज़function EnsureCall ((method) { के लिए var r; while (!(r = method.apply(this, Array.prototype.slice.call ((arguments).slice))) { Sleep ((300); } return r; } function main (() { InitAccount = EnsureCall ((exchange.GetAccount)))); लॉग (InitAccount); } इस तरह के कॉल में गलतियाँ होती हैं।

सोलोरेज़मुझे लगता है कि जब आप फिर से एपीआई करते हैं तो इस पर विचार करना सबसे अच्छा है।

सोलोरेज़क्या भगवान ने इसका परीक्षण किया है? मैं इसे क्यों उपयोग कर रहा हूं, यह त्रुटि हैः https://dn-filebox.qbox.me/bdfed9d5bfd320ceaa06732c84ef0dd1662dc3f8.png

शून्य```EnsureCall ((exchange.GetAccount) ``GetAccount के बाद जोड़ने की जरूरत नहीं है)))