واقعات کے لئے سننے کے لئے، یہ کوئی بھی ہے جب واپس آتا ہےWebSocket
پڑھنے کے قابل اعداد و شمار یا بیک وقت کام، جیسے:exchange.Go()
, HttpQuery_Go()
، وغیرہ مکمل کر رہے ہیں.
اگر لوٹایا اعتراض صفر قدر نہیں ہے،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
زبان،threading.Thread()
فنکشن ایک تھریڈ بناتا ہے، جسے موجودہ تھریڈ میں ہونے والے واقعات کو سننے کے لیے تھریڈ
{@fun/Global/Dial Dial}، {@fun/Trade/exchange.Go exchange.Go}، {@fun/Global/HttpQuery_Go HttpQuery_Go}
UUID __ خدمت کریں