Hören Sie auf die Ereignisse, es kommt zurück, wenn es irgendwelcheWebSocket
Lesbare Daten oder gleichzeitige Aufgaben wieexchange.Go()
, HttpQuery_Go()
, etc. sind abgeschlossen.
Wenn das zurückgegebene Objekt kein Nullwert ist, wird dieEvent
Der in der Rückgabe enthaltenen Inhalt ist der Ereignis-Trigger-Typ. Zum Beispiel die folgende Rückgabewertstruktur:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
Gegenstand
EventLoop (siehe unten) EventLoop (Zeitrahmen)
Der Parametertimeout
ist die Einstellung der Ausfallzeit in Millisekunden.timeout
wartet, bis ein Ereignis auftritt, bevor es zurückgegeben wird, wenn es auf 0 gesetzt ist. Wenn es größer als 0 ist, setzt es das Ereignis auf einen Timeout und gibt das jüngste Ereignis sofort zurück, wenn es kleiner als 0 ist.
Zeitverzögerung
falsche
Zahl
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);
}
Der erste Anruf an dieEventLoop()
Funktion im Code initialisiert den Mechanismus für das zugehörte Ereignis, und wenn die ersteEventLoop()
Wenn ein Call nach dem Ereignis-Callback beginnt, wird es die vorherigen Ereignisse verpassen. Das zugrunde liegende System wickelt eine Warteschlange, die maximal 500 Ereignis-Callbacks speichert.EventLoop()
Wenn die Funktion nicht rechtzeitig aufgerufen wird, um sie während der Programmdurchführung zu entfernen, werden spätere Ereignisrückrufe außerhalb des 500-Cache verloren gehen.EventLoop()
Funktion beeinflussen nicht die Cache-Warteschlange des zugrunde liegenden Systems WebSocket oder die Caches von gleichzeitigen Funktionen wieexchange.Go()
. Für diese Caches ist es immer noch notwendig, die jeweiligen Methoden zu verwenden, um die Daten abzurufen.EventLoop()
Funktion für Daten, die vor demEventLoop()
Der Hauptzweck derEventLoop()
Die Funktion der Strategie-Schicht besteht darin, die Strategie-Schicht darüber zu informieren, dass neue Netzdaten vom zugrunde liegenden System empfangen wurden.EventLoop()
Funktion gibt ein Ereignis zurück, durchläuft einfach alle Datenquellen.exchange.Go()
Versuchen Sie, Daten zu erhalten.EventLoop()
Die Funktion unterstützt nur Live-Handel.
Hören Sie auf Ereignisse im Hauptthread, wenn Sie von der Hauptfunktion aufgerufen werdenmain()
. in den in derJavaScript
Sprache, die__Thread()
Funktion erstellt einen Thread, der auch in der Ausführungsfunktion des Threads aufgerufen werden kann, um auf Ereignisse im aktuellen Thread zu hören.
Das bedeutet, dass wir uns nicht mehr auf die Frage konzentrieren müssen.
UUID __Dienen