Thử lại chức năng cho dung nạp lỗi giao diện.
Giá trị trả về của hàm callback khi nó được thực hiện. Tất cả các loại được hỗ trợ bởi hệ thống ngoại trừgiá trị sai logicvàgiá trị null.
_C (((pfn) _C ((pfn,...args)
Các thông sốpfn
là một tham chiếu chức năng, đó là mộtChức năng gọi lại.
pfn
đúng
chức năng
Các thông số đếnChức năng gọi lại, có thể có nhiều hơn một tham sốarg
Loại và số lượng các thông sốarg
phụ thuộc vào các thông số củaChức năng gọi lại.
arg
sai
chuỗi, số, bool, đối tượng, mảng, hàm, tất cả các loại được hỗ trợ bởi hệ thống, chẳng hạn như giá trị null
function main(){
var ticker = _C(exchange.GetTicker)
// Adjust _C() function retry interval to 2 seconds
_CDelay(2000)
var depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
}
def main():
ticker = _C(exchange.GetTicker)
_CDelay(2000)
depth = _C(exchange.GetDepth)
Log(ticker)
Log(depth)
void main() {
auto ticker = _C(exchange.GetTicker);
_CDelay(2000);
auto depth = _C(exchange.GetDepth);
Log(ticker);
Log(depth);
}
Đối với các hàm dung nạp lỗi không có tham số:
function main(){
var records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
}
def main():
records = _C(exchange.GetRecords, PERIOD_D1)
Log(records)
void main() {
auto records = _C(exchange.GetRecords, PERIOD_D1);
Log(records);
}
Đối với các hàm có tham số chịu lỗi:
var test = function(a, b){
var time = new Date().getTime() / 1000
if(time % b == 3){
Log("Eligible!", "#FF0000")
return true
}
Log("Retry!", "#FF0000")
return false
}
function main(){
var ret = _C(test, 1, 5)
Log(ret)
}
import time
def test(a, b):
ts = time.time()
if ts % b == 3:
Log("Eligible!", "#FF0000")
return True
Log("Retry!", "#FF0000")
return False
def main():
ret = _C(test, 1, 5)
Log(ret)
// C++ does not support fault tolerance for custom functions in this way
Nó cũng có thể được sử dụng cho khả năng chịu lỗi của các chức năng tùy chỉnh:
Các_C()
function sẽ tiếp tục gọi hàm được chỉ định cho đến khi nó trả về thành công (chức năng được tham chiếu bởi tham sốpfn
trả lạikhônghoặcsaikhi được gọi sẽ thử gọi lạipfn
Ví dụ:_C(exchange.GetTicker)
. Khoảng thời gian thử lại mặc định là 3 giây, bạn có thể gọi_CDelay()
chức năng để thiết lập khoảng thời gian thử lại._CDelay(1000)
có nghĩa là để thay đổi khoảng thời gian thử lại của_C()
chức năng 1 giây.
Sự dung nạp lỗi có thể được thực hiện cho, nhưng không giới hạn ở, các chức năng sau:
exchange.GetTicker()
exchange.GetDepth()
exchange.GetTrades()
exchange.GetRecords()
exchange.GetAccount()
exchange.GetOrders()
exchange.GetOrder()
exchange.GetPositions()
Tất cả có thể được gọi bởi các_C()
chức năng cho dung nạp lỗi._C()
chức năng không giới hạn trong chức năng được liệt kê ở trên dung nạp lỗi, tham sốpfn
là một tham chiếu hàm hơn là một cuộc gọi hàm.
Lưu ý rằng nó_C(exchange.GetTicker)
, không_C(exchange.GetTicker())
.