Dengarkan untuk peristiwa, ia kembali apabila ada apa-apaWebSocket
data yang boleh dibaca atau tugas serentak, seperti:exchange.Go()
, HttpQuery_Go()
, dan lain-lain telah selesai.
Jika objek yang dikembalikan bukan nilai sifar,Event
yang terkandung dalam kandungan pulangan adalah jenis pemicu peristiwa. Sebagai contoh, struktur nilai pulangan berikut:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
objek
EventLoop ((() EventLoop (timeout)
Parametertimeout
adalah tetapan masa lapang, dalam mili saat.timeout
menanti sesuatu peristiwa berlaku sebelum kembali jika ia ditetapkan kepada 0. Jika ia lebih besar daripada 0, ia menetapkan peristiwa untuk menunggu masa lapang, dan mengembalikan peristiwa yang paling baru dengan serta-merta jika ia kurang daripada 0.
masa lapang
palsu
nombor
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 kepadaEventLoop()
Fungsi dalam kod menghidupkan mekanisme untuk peristiwa yang didengar, dan jika yang pertamaEventLoop()
panggilan bermula selepas callback peristiwa, ia akan terlepas peristiwa sebelumnya. sistem yang mendasari membungkus struktur antrian yang menyimpan maksimum 500 callback peristiwa.EventLoop()
fungsi tidak dipanggil pada masa untuk mengambil mereka keluar semasa pelaksanaan program, kemudian panggilan balik acara di luar 500 cache akan hilang.EventLoop()
fungsi tidak mempengaruhi barisan cache sistem asas WebSocket atau cache fungsi serentak sepertiexchange.Go()
. Untuk cache ini, ia masih perlu menggunakan kaedah masing-masing untuk mendapatkan data.EventLoop()
fungsi untuk data yang telah diambil sebelumEventLoop()
fungsi kembali.EventLoop()
fungsi adalah untuk memaklumkan lapisan strategi bahawa data rangkaian baru telah diterima oleh sistem yang mendasari. keseluruhan strategi didorong oleh peristiwa.EventLoop()
fungsi mengembalikan peristiwa, hanya melintasi semua sumber data.exchange.Go()
cuba untuk mendapatkan data.EventLoop()
Fungsi ini hanya menyokong perdagangan langsung.
Dengarkan peristiwa dalam benang utama apabila dipanggil dari fungsi utamamain()
. Dalam strategi yang ditulis dalamJavaScript
Bahasa,threading.Thread()
fungsi mencipta thread, yang juga boleh dipanggil dalam fungsi pelaksanaan thread
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
UUID __ Berkhidmat