بهنام بختیاری
بهنام بختیاری
خواندن ۲ دقیقه·۴ سال پیش

iterators و generators دقیقا در جاوااسکریپت چکار میکنند؟! ( قسمت اول )

ما در جاوااسکریپت نیاز داریم داده ها (data) رو پیمایش کنیم (iterate) تا بتونیم اونا رو داخل UI خودمون جا بدیم.درسته؟

خب ما در ES5 برای اینکار از متد هایی مثل map , filter یا حتی از یک حلقه for استفاده میکردیم. حالا در ES6 این iterator و generator ها اومدن داستان پیمایش کردن رو بصورت مستقیم به هسته جاوااسکریپت اضافه کردن که خیلی هم کار خوبی کردن!

حالا چندتا سوال پیش میاد که ما بتونیم به پاسخ موضوع مقالمون برسیم:

اصلا iterators و iterables چی هستند؟؟

اول توضیح در مورد عمل iteration : این عمل ینی اینکه چیزایی که قابل پیمایش هستند رو بیا دونه دونه element هاشو پیمایش کن، حالا طی این پیمایش یه کاری هم روی هر element انجام بده.

خب، میتونیم بگیم که یک iterable داده ای (data structure) هست که می خواد elementهای خودش برای همه قابل دسترسی قرار بده تا بتونن روی اون پیمایش کنن و ازش استفاده کنن. حالا این "قابل دسترس " قرار دادن رو کی انجامش میده؟؟ این دوستمون انجامش میده : Symbol.iterator( بهش میگن یه کارخونه برای iteratorها )

و اینکه iterator چی هست خلاصش اینه که اون دوستی که داره عمل iterate کردن رو انجام میده ما بهش میگیم iterator .

چه مقادیری در جاوااسکریپت قابل پیمایش هستند؟

اینم یه لیست از چیزایی که قابل پیمایش هستند:

آرایه ( Arrays )

رشته ( Strings )

مپ ( Maps )

ست ( Sets )

داده های DOM Data Structurs

حالا یه سوال دیگه، ایده ی داستان itarable اصلا از کجا اومده؟؟

برای جوابش اول باید دوتا موضوع رو بدونیم یک data consumers و دیگری data sources . خیلی ساده و خلاصه بخوام بگم دیتا کانسومر ها برای اینکه کار کنن و مفید باشن، نیاز دارن به اطلاعات..اوکی؟؟ حالا این اطلاعاتشونو از کیا میگیرن؟ از دیتا سورس ها. حالا ما یدونه راه ارتباطی نیاز داریم تا این دوتا رو به هم وصل کنیم تا اطلاعاتشون رد و بدل بشه.اینجاست که iterable میاد واسطه میشه و کمکمون میکنه.


این عکس کمک میکنه بهتر موضوع رو درک کنید.
این عکس کمک میکنه بهتر موضوع رو درک کنید.




این مقاله ادامه داره و توی چندتا بخش قراره منتشر بشه، در قسمت های بعدی توضیحاتم رو کامل میکنم...

امیدوارم براتون مفید بوده باشه، دوست داشتید یه سر هم به کانال ما بزنید که کلی تمرین جاوااسکریپتی داریم و باهم چالش های باحالی تجربه میکنیم :)


جاوااسکریپتjavascriptiteratorgeneratores6
توسعه‌دهنده کسب‌وکار، مشاور بازاریابی | علاقمند به علوم رفتاری و طراحی تجربه
شاید از این پست‌ها خوشتان بیاید