Cuba semula fungsi untuk toleransi ralat antara muka.
Nilai pulangan fungsi panggilan balik apabila dilaksanakan. Semua jenis disokong oleh sistem kecualinilai logik palsudannilai null.
_C (((pfn) _C ((pfn,...args)
Parameterpfn
adalah rujukan fungsi, yang merupakanFungsi callback.
pfn
betul
fungsi
Parameter kepadaFungsi panggilan balik, mungkin terdapat lebih daripada satu parameterarg
. Jenis dan bilangan parameterarg
bergantung kepada parameterFungsi callback.
arg
palsu
string, nombor, bool, objek, susunan, fungsi, semua jenis disokong oleh sistem, seperti nilai sifar
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);
}
Untuk fungsi toleransi ralat tanpa parameter:
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);
}
Untuk fungsi dengan parameter yang toleransi ralat:
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
Ia juga boleh digunakan untuk toleransi ralat fungsi tersuai:
Peraturan_C()
fungsi akan terus memanggil fungsi yang ditentukan sehingga ia kembali dengan berjaya (fungsi dirujuk oleh parameterpfn
pengembaliantiadaataupalsuApabila dipanggil akan cuba memanggil semulapfn
Sebagai contoh:_C(exchange.GetTicker)
. Jangkaan cubaan semula lalai adalah 3 saat, anda boleh memanggil_CDelay()
fungsi untuk menetapkan selang cubaan semula._CDelay(1000)
bermaksud untuk mengubah selang percubaan semula_C()
fungsi ke 1 saat.
Toleransi ralat boleh dilakukan untuk, tetapi tidak terhad kepada, fungsi berikut:
exchange.GetTicker()
exchange.GetDepth()
exchange.GetTrades()
exchange.GetRecords()
exchange.GetAccount()
exchange.GetOrders()
exchange.GetOrder()
exchange.GetPositions()
Semua boleh dipanggil oleh_C()
fungsi untuk toleransi ralat._C()
fungsi tidak terhad kepada toleransi kesalahan fungsi yang disenaraikan di atas, parameterpfn
adalah rujukan fungsi dan bukannya panggilan fungsi.
Perhatikan bahawa ia adalah_C(exchange.GetTicker)
, tidak_C(exchange.GetTicker())
.