Dengarkan untuk peristiwa, itu kembali ketika adaWebSocket
data yang dapat dibaca atau tugas bersamaan, sepertiexchange.Go()
, HttpQuery_Go()
, dll telah selesai.
Jika objek yang dikembalikan bukan nilai nol,Event
yang terkandung dalam konten pengembalian adalah jenis pemicu peristiwa. Misalnya struktur nilai pengembalian berikut:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
objek
EventLoop ((() EventLoop (timeout)
Parametertimeout
adalah pengaturan timeout, dalam milidetik.timeout
menunggu suatu peristiwa terjadi sebelum kembali jika ditetapkan menjadi 0. Jika lebih besar dari 0, mengatur peristiwa untuk menunggu waktu habis, dan mengembalikan peristiwa terbaru segera jika kurang dari 0.
timeout
palsu
nomor
function main() {
var routine_getTicker = exchange.Go("GetTicker")
var routine_getDepth = exchange.Go("GetDepth")
var routine_getTrades = exchange.Go("GetTrades")
// Sleep(2000), if the Sleep statement is used here, it will cause the subsequent EventLoop function to miss the previous events, because after waiting for 2 seconds, the concurrent function has received the data, and the subsequent EventLoop listening mechanism started, it misses these events.
// These events will not be missed unless EventLoop(-1) is called at the beginning of the first line of code to first initialize the EventLoop's listening mechanism.
// Log("GetDepth:", routine_getDepth.wait()) If the wait function is called in advance to retrieve the result of a concurrent call to the GetDepth function, the event that the GetDepth function receives the result of the request will not be returned in the EventLoop function.
var ts1 = new Date().getTime()
var ret1 = EventLoop(0)
var ts2 = new Date().getTime()
var ret2 = EventLoop(0)
var ts3 = new Date().getTime()
var ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
}
import time
def main():
routine_getTicker = exchange.Go("GetTicker")
routine_getDepth = exchange.Go("GetDepth")
routine_getTrades = exchange.Go("GetTrades")
ts1 = time.time()
ret1 = EventLoop(0)
ts2 = time.time()
ret2 = EventLoop(0)
ts3 = time.time()
ret3 = EventLoop(0)
Log("The first concurrent task completed was:", _D(ts1), ret1)
Log("The second concurrent task completed was:", _D(ts2), ret2)
Log("The third concurrent task completed was:", _D(ts3), ret3)
Log("GetTicker:", routine_getTicker.wait())
Log("GetDepth:", routine_getDepth.wait())
Log("GetTrades:", routine_getTrades.wait())
void main() {
auto routine_getTicker = exchange.Go("GetTicker");
auto routine_getDepth = exchange.Go("GetDepth");
auto routine_getTrades = exchange.Go("GetTrades");
auto ts1 = Unix() * 1000;
auto ret1 = EventLoop(0);
auto ts2 = Unix() * 1000;
auto ret2 = EventLoop(0);
auto ts3 = Unix() * 1000;
auto ret3 = EventLoop(0);
Log("The first concurrent task completed was:", _D(ts1), ret1);
Log("The second concurrent task completed was:", _D(ts2), ret2);
Log("The third concurrent task completed was:", _D(ts3), ret3);
Ticker ticker;
Depth depth;
Trades trades;
routine_getTicker.wait(ticker);
routine_getDepth.wait(depth);
routine_getTrades.wait(trades);
Log("GetTicker:", ticker);
Log("GetDepth:", depth);
Log("GetTrades:", trades);
}
Panggilan pertama untukEventLoop()
fungsi dalam kode menginisialisasi mekanisme untuk acara yang didengarkan, dan jika yang pertamaEventLoop()
call dimulai setelah event callback, itu akan melewatkan acara sebelumnya. sistem yang mendasari membungkus struktur antrian yang cache maksimum 500 callback acara.EventLoop()
fungsi tidak dipanggil pada waktunya untuk mengambil mereka keluar selama eksekusi program, kemudian callback acara di luar 500 cache akan hilang.EventLoop()
fungsi tidak mempengaruhi antrian cache dari sistem dasar WebSocket atau cache fungsi bersamaan sepertiexchange.Go()
Untuk cache ini, masih perlu menggunakan metode masing-masing untuk mengambil data.EventLoop()
fungsi untuk data yang telah diambil sebelumEventLoop()
Tujuan utama dariEventLoop()
fungsi adalah untuk memberi tahu lapisan strategi bahwa data jaringan baru telah diterima oleh sistem yang mendasari.EventLoop()
fungsi mengembalikan suatu peristiwa, hanya melintasi semua sumber data.exchange.Go()
mencoba untuk mendapatkan data.EventLoop()
Fungsi hanya mendukung perdagangan langsung.
Dengarkan acara di thread utama ketika dipanggil dari fungsi utamamain()
. Dalam strategi yang ditulis dalamJavaScript
bahasa,threading.Thread()
fungsi membuat thread, yang juga dapat dipanggil dalam fungsi eksekusi thread
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
UUID __Servis