این قسمت کار با داده های غیر همزمان
همچنین میتونید از قسمت اول این آموزش شروع کنید:
برخلاف جاواسکریپت ، اینجا از واژه stream برای نمایش داده های غیر همزمان به کار میره. هر رویدادی که به شکل داده باشه یک المان از stream هست و در صورتی که خطایی هم باشه به شکل هشدار ظاهر میشه که بگه چیزی به صورت غیر موفق بوده . وقتی یک جریان (stream) همه رویداد هارو حل کنه مقدار رویداد done رو به listener اعلام میکنه که به مفهوم رسیدن به نقطه پایان است.
جریان ها برای نمایش سری رویدادها در زمان خوندن اطلاعات از یک منبع اطالاعات به کار میرن. زمانهایی که با داده هایی مثل HTML سر و کار داریم Stream ها گزینه خوبی برای ما هستند.
برای اینکه موضوع Stream رو درک کنید، این کد رو بررسی کنید:
در انتهای کد و در کامنت ها میتونید نتیجه اجرای این کد رو ببینید.
برای نوشتن این کد از StreamController که یک interface هست کمک گرفتیم که کار کنترل رویداد های ورودی مارو مدیریت میکنه. برای به کار گرفتن یک رویداد داده و اضافه کردن داده به جریان داده ، از متد add استفاده میکنیم.
از یک کلاس به همراه تایپ String استفاده کردیم که به برنامه اعلام کنیم که دقیقا نوع داده ما چیست.
همچنین میتونیم گوش به زنگ خطا هم باشیم و با قرار دادن addError یک داده که به شکل خطا هست رو بفرستیم.
همچنین میتونیم یک listener برای وضعیت done تعریف کنیم. این کار رو با اضافه کردن متد close به کدمون انجام میدیم. این رویداد هر زمانی که کار جریان تموم شد اجرا میشه ( و میشه به خاطر همین خاصیتش از یک تابع callback استفاده کنیم)
همین کد رو با میشه با async/await مجدد نوشت و refactor کرد:
دقت کنید که نتیجه کاملا یکسان هست!
توی دارت ما ۲ نوع جریان داریم:
مثالی که الان بررسی کردیم به صورت single بود و اگر بخواهیم مثلا یک listener دیگه اضافه کنیم خطای زمان اجرا به ما میده.
با استفاده از جریان های گروهی (که البته به لحاظ لغوی معنی مورد نظر رو نمیده) میتونیم چندین listener بنویسیم. برای این منظور از متد asBroadcastStream استفاده میکنیم:
در نتیجه در خروجی :
Received data: Hello Received data again: Hello Received data: World Received data again: World
همچنین میتونیم از async/await برای گوش دادن به جریان داده ها استفاده کنیم:
جریان ها میتونن از iterable ها مثل لیست و ست هم ساخته بشن. برای مثال:
در نتیجه:
D a r t
از این خاصیت میشه خیلی استفاده ها کرد. مثلا من اینجا یک تایمر ساده ساختم که همین نتیجه رو نمایش میده البته هر حرف بعد از گذشت مدت زمانی روی صفحه ظاهر میشه:
همچنین میتونید از سایر نوشته های من تو ویرگول بازدید کنید:
Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123/