Sumber dimuat naik... memuat...

_C

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)

Parameterpfnadalah rujukan fungsi, yang merupakanFungsi callback. pfn betul fungsi Parameter kepadaFungsi panggilan balik, mungkin terdapat lebih daripada satu parameterarg. Jenis dan bilangan parameterargbergantung 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 parameterpfnpengembaliantiadaataupalsuApabila dipanggil akan cuba memanggil semulapfnSebagai 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, parameterpfnadalah rujukan fungsi dan bukannya panggilan fungsi. Perhatikan bahawa ia adalah_C(exchange.GetTicker), tidak_C(exchange.GetTicker()).
_N _Silang