برنامه نویسی ناهمزمان
برنامه نویسی ناهمزمان
مطمئناً برنامه نویسی ناهمزمان از ابتدای JS وجود داشته است. اما اکثر توسعه دهندگان JS هرگز دقیقاً به دقت در نظر نگرفته اند که چگونه و چرا در برنامه های خود ظاهر می شود یا راه های مختلف دیگری را برای مدیریت آن بررسی نکرده اند. رویکرد به اندازه کافی خوب همیشه تابع پاسخ به تماس فروتنانه بوده است. بسیاری تا به امروز اصرار دارند که تماس های تلفنی بیش از حد کافی هستند.
اما از آنجایی که JS هم از نظر وسعت و هم از نظر پیچیدگی به رشد خود ادامه میدهد، برای پاسخگویی به نیازهای روزافزون یک زبان برنامهنویسی درجه یک که در مرورگرها و سرورها و هر دستگاه قابل تصوری در بین آنها اجرا میشود، مشکلات مدیریت ناهمزمانی به طور فزایندهای فلجکننده میشوند. ، و آنها برای رویکردهایی فریاد می زنند که هم توانایی بیشتری دارند و هم منطقی تر.
در حالی که همه اینها ممکن است در حال حاضر نسبتاً انتزاعی به نظر برسد، من به شما اطمینان می دهم که در ادامه این کتاب به طور کامل و ملموس تر به آن خواهیم پرداخت. ما انواع تکنیک های نوظهور برای برنامه نویسی جاوا اسکریپت ناهمگام را در چندین فصل بعدی بررسی خواهیم کرد.
اما قبل از اینکه بتوانیم به آنجا برسیم، باید عمیقتر درک کنیم که ناهمزمانی چیست و چگونه در JS عمل میکند.
برنامه ای به صورت تکه تکه
شما ممکن است برنامه JS خود را در یک فایل js بنویسید، اما برنامه شما تقریباً به طور قطع از چندین تکه تشکیل شده است که فقط یکی از آنها اکنون اجرا می شود و بقیه آنها بعدا اجرا می شوند. رایج ترین واحد تکه تابع است.
به نظر می رسد مشکلی که اکثر توسعه دهندگان تازه وارد JS دارند این است که بعداً به طور دقیق و بلافاصله بعد از این اتفاق نمی افتد. به عبارت دیگر، وظایفی که اکنون نمیتوانند تکمیل شوند، طبق تعریف، به صورت ناهمزمان تکمیل میشوند، و بنابراین، ما رفتار مسدودکنندهای که ممکن است به طور شهودی انتظار یا میخواهید نخواهیم داشت
احتمالاً میدانید که درخواستهای استاندارد Ajax به صورت همزمان کامل نمیشوند، به این معنی که تابع ajax(..) هنوز هیچ مقداری برای بازگشت به متغیر داده ندارد. اگر ajax (..) بتواند تا زمانی که پاسخ بازگردد، مسدود شود، داده = انتساب به خوبی کار می کند.
اما آژاکس اینگونه نیست. ما اکنون یک درخواست Ajax ناهمزمان میکنیم و تا بعداً نتایج را دریافت نمیکنیم. ساده ترین (اما قطعا نه تنها، یا لزوماً حتی بهترین!) راه “انتظار” از هم اکنون تا بعد، استفاده از تابعی است که معمولاً به آن تابع callback می گویند:
هشدار: ممکن است شنیده باشید که امکان ایجاد درخواست های همزمان Ajax وجود دارد. در حالی که این از نظر فنی درست است، هرگز و هرگز تحت هیچ شرایطی نباید این کار را انجام دهید، زیرا رابط کاربری مرورگر (دکمهها، منوها، اسکرول و غیره) را قفل میکند و از هر گونه تعامل کاربر جلوگیری میکند. این یک ایده وحشتناک است و همیشه باید از آن اجتناب کرد.
قوانین ارسال دیدگاه در سایت