사건에 대한 귀를 기울이고, 그것은 어떤 경우에 돌아옵니다WebSocket
가독 가능한 데이터 또는 동시에 수행되는 작업,exchange.Go()
, HttpQuery_Go()
, 등이 완료됩니다.
반환 객체가 null 값이 아니라면,Event
반환 컨텐츠에 포함된 것은 이벤트 트리거 타입입니다. 예를 들어 다음 반환 값 구조:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
물체
이벤트 루프 ((() 이벤트 루프 (타임아웃)
매개 변수timeout
타임아웃 설정, 밀리초입니다.timeout
0로 설정된 경우 이벤트가 발생하기 전에 발생을 기다립니다. 0보다 크면 타임아웃을 기다리도록 설정하고 0보다 작으면 가장 최근의 이벤트를 즉시 반환합니다.
타임아웃
거짓
번호
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);
}
첫 번째 전화EventLoop()
코드의 함수는 그 청취된 이벤트의 메커니즘을 초기화합니다.EventLoop()
호출은 이벤트 콜백이 시작되면 이전 이벤트를 놓칠 것입니다. 기본 시스템은 최대 500 개의 이벤트 콜백을 캐시하는 대기열 구조를 포장합니다.EventLoop()
이 함수는 프로그램 실행 중에 꺼내기 위해 시간 내에 호출되지 않으면, 500 캐시 외부의 후속 이벤트 콜백은 손실됩니다.EventLoop()
함수는 기본 시스템 WebSocket의 캐시 대기열 또는 같은 동시 함수의 캐시에 영향을 미치지 않습니다exchange.Go()
이 캐시의 경우, 여전히 해당 방법을 사용하여 데이터를 검색하는 것이 필요합니다.EventLoop()
함수EventLoop()
함수 반환.EventLoop()
기능은 새로운 네트워크 데이터가 기본 시스템에 수신되었다는 전략 계층을 알리는 것입니다. 전체 전략은 이벤트에 의해 주도됩니다.EventLoop()
함수는 이벤트를 반환, 그냥 모든 데이터 소스를 통과합니다. 예를 들어, 웹소켓 연결, 객체에 의해 생성exchange.Go()
데이터를 얻기 위해 노력합니다.EventLoop()
이 기능은 라이브 거래만 지원합니다.
메인 함수에서 호출될 때 메인 스레드에서 이벤트를 듣기main()
.JavaScript
언어,__Thread()
이 함수는 스레드를 생성합니다. 스레드
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
UUID __서비스