Sumber daya yang dimuat... Pemuatan...

_C

Coba lagi fungsi untuk toleransi kesalahan antarmuka.

Nilai yang dikembalikan dari fungsi callback saat dijalankan. Semua tipe didukung oleh sistem kecualinilai logis palsudannilai nol.

_C (((pfn) _C ((pfn,...args)

Parameterpfnadalah referensi fungsi, yang merupakanFungsi callbackAku tidak tahu. pfn benar fungsi Parameter untukfungsi callback, mungkin ada lebih dari satu parameterarg. Jenis dan jumlah parameterargtergantung pada parameter dariFungsi callbackAku tidak tahu. arg palsu string, number, bool, object, array, function, semua jenis didukung oleh sistem, seperti nilai nol

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 kesalahan 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 kesalahan:

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

Hal ini juga dapat digunakan untuk toleransi kesalahan fungsi kustom:

Peraturan_C()fungsi akan terus memanggil fungsi yang ditentukan sampai kembali dengan sukses (fungsi yang dirujuk oleh parameterpfnkembalinolataupalsuketika dipanggil akan mencoba memanggil lagipfnMisalnya:_C(exchange.GetTicker). Interval uji ulang default adalah 3 detik, Anda dapat memanggil_CDelay()fungsi untuk mengatur interval percobaan ulang._CDelay(1000)berarti untuk mengubah interval percobaan ulang dari_C()fungsi ke 1 detik. Toleransi kesalahan dapat dilakukan untuk, namun tidak terbatas pada, fungsi berikut:

  • exchange.GetTicker()
  • exchange.GetDepth()
  • exchange.GetTrades()
  • exchange.GetRecords()
  • exchange.GetAccount()
  • exchange.GetOrders()
  • exchange.GetOrder()
  • exchange.GetPositions()Semua dapat dipanggil oleh_C()fungsi untuk toleransi kesalahan._C()fungsi tidak terbatas pada fungsi yang tercantum di atas toleransi kesalahan, parameterpfnadalah referensi fungsi daripada panggilan fungsi. Perhatikan bahwa itu_C(exchange.GetTicker), tidak_C(exchange.GetTicker()).
_N _Silang