Nghe cho các sự kiện, nó trở lại khi có bất kỳWebSocket
dữ liệu có thể đọc hoặc các nhiệm vụ đồng thời, chẳng hạn như:exchange.Go()
, HttpQuery_Go()
, v.v. được hoàn thành.
Nếu đối tượng được trả về không phải là giá trị null,Event
chứa trong nội dung trả về là loại kích hoạt sự kiện. Ví dụ: cấu trúc giá trị trả về sau:
{"Seq":1,"Event":"Exchange_GetTrades","ThreadId":0,"Index":3,"Nano":1682068771309583400}
đối tượng
EventLoop ((() EventLoop ((timeout)
Các thông sốtimeout
là thiết lập timeout, trong milliseconds.timeout
chờ cho một sự kiện xảy ra trước khi trả về nếu nó được thiết lập là 0. Nếu nó lớn hơn 0, nó đặt sự kiện để chờ đợi thời gian hết, và trả về sự kiện gần đây nhất ngay lập tức nếu nó nhỏ hơn 0.
thời gian nghỉ
sai
số
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);
}
Cuộc gọi đầu tiên đếnEventLoop()
chức năng trong mã khởi tạo cơ chế cho sự kiện nghe, và nếu đầu tiênEventLoop()
gọi bắt đầu sau khi callback sự kiện, nó sẽ bỏ lỡ các sự kiện trước đó. Hệ thống cơ bản gói một cấu trúc hàng đợi lưu trữ tối đa 500 callback sự kiện.EventLoop()
chức năng không được gọi trong thời gian để lấy chúng ra trong quá trình thực thi chương trình, sau đó callback sự kiện bên ngoài bộ nhớ cache 500 sẽ bị mất.EventLoop()
chức năng không ảnh hưởng đến hàng đợi bộ nhớ cache của hệ thống WebSocket cơ bản hoặc bộ nhớ cache của các chức năng đồng thời nhưexchange.Go()
Đối với các bộ nhớ cache này, vẫn cần phải sử dụng các phương pháp tương ứng để lấy dữ liệu.EventLoop()
chức năng cho dữ liệu đã được truy xuất trước khiEventLoop()
Mục đích chính củaEventLoop()
Các hoạt động của hệ thống mạng được xác định bởi các sự kiện.EventLoop()
function trả về một sự kiện, chỉ đi qua tất cả các nguồn dữ liệu. ví dụ, kết nối WebSocket, đối tượng được tạo ra bởiexchange.Go()
cố gắng lấy dữ liệu.EventLoop()
chức năng chỉ hỗ trợ giao dịch trực tiếp.
Nghe cho các sự kiện trong chủ đề chủ đề khi được gọi từ chức năng chínhmain()
Trong các chiến lược được viết trongJavaScript
ngôn ngữ,__Thread()
function tạo ra một thread, mà cũng có thể được gọi trong hàm thực thi thread
{@fun/Global/Dial Dial}, {@fun/Trade/exchange.Go exchange.Go}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
UUID __Hãy phục vụ