Beberapa tips untuk mencoba kembali kemasan yang salah

Penulis:Tidak ada, Dibuat: 2015-07-20 22:01:59, Diperbarui: 2015-07-20 22:06:32

Kesalahan yang disebabkan oleh jaringan pertukaran dapat menyebabkan panggilan fungsi seperti exchange.GetAccount gagal, sehingga perlu dicoba lagi, tetapi kode yang muncul setiap kali dicoba kembali terlalu rumit, dapat diselesaikan dengan cara ini:

Fungsi ini ditempatkan di awal.

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会重试得到的都是有效的数据, 不用每个函数都为了容错封装一次了.

当然你也可以把EnsureCall改名为EC或者Call之类好记又短的名子, 这样更方便.

Lebih banyak

sederhana-chunApakah ada versi PY dari ini?

Solorezfungsi EnsureCall ((method) { War r; while (!(r = method.apply(this, Array.prototype.slice.call ((arguments).slice))) { Sleep ((300); Aku tidak tahu. Kembali ke r; Aku tidak tahu. fungsi main (() { InitAccount = EnsureCall ((exchange.GetAccount))); Log (InitAccount); Aku tidak tahu. Jika Anda menggunakan aplikasi seperti di atas, Anda akan mendapatkan kesalahan.

SolorezSaya pikir lebih baik Anda mempertimbangkan kesalahan ini saat Anda membuat api lagi.

SolorezApakah Tuhan telah menguji? Mengapa saya mendapatkan kesalahan ini ketika saya menggunakannya: https://dn-filebox.qbox.me/bdfed9d5bfd320ceaa06732c84ef0dd1662dc3f8.png

Tidak ada```EnsureCall ((exchange.GetAccount) ``GetAccount tidak perlu ditambahkan setelah (((