AbortSignal/AbortController interfacelari async operasiyalarni tohtatish uchun ishlatiladi. Masalan, juda ko'p ishlatiladigan fetch() funksiya RequestInit parameter(object)ga signal nomli property kutadi (optional) va biz bu propertyga AbortSignal instance berishimiz mumkin. Va keyinroq bu AbortController instancening .abort() methodini chaqirib requestni tohtatishimiz mumkin.
AbortSignal qabul qiladigan APIlar: - Fetch - EventTarget API - ReadableStream/WritableStream - WebSocket
AbortSignal instance odatda AbortControllerda saqlanadi, uni new AbortController() qilib yaratamiz, lekin uni AbortSignal static methodlari orqali ham yaratishimiz mumkin. Bular: - AbortSignal.abort() - Allaqachon abort qilingan instance yaratadi. - AbortSignal.any() - Parameterga AbortSignallardan tashkil topgan iterable oladi va ulardan biri abort bolganda bu ham abort boladi. - AbortSignal.timeout() - Parameterda berilgan millisekund qiymatda avtomat abort boladigan instance qaytaradi (Backenddan kutilayotgan javobga timeout qoyish uchun juda qulay)
Skrindagi config vscodeda importlar bilan ishlashni qulaylashtiradi, yozilgan amallar file saqlanayotganda yozilgan ketma-ketlikda bajariladi: - Avval ishlatilmagan importlar olib tashlanadi; - Keyin yetishmaydigan importlar qoshib chiqiladi (tekshirish kerak bolishi mumkin, agar birdan kop import bolsa malum qoidalarga ko'ra birinchisi tanlanadi); - Keyin importlar malum qoidalarga qarab sort qilinadi; - Oxirida linter (eslint, stylelint...) xatolar tuzatiladi.
PS: .vscode/settings.json fileni gitga qoshsa teamdagi hamma vscode foydalanuvchilariga foydali boladi
Biz bilamizki, browserda script taglar kech yuklanishi uchun defer atribut berishimiz kerak. Bo'lmasa browser script tagni uchratishi bilan html processingni tohtatib scriptni yuklab(fetch) va ishlatish(execute)ni boshlaydi. Bu oz navbatida undan keyin kelgan html elementlarning DOMda topilmasligiga sabab boladi. Agar scriptimizda type=module bolsa defer avtomat tarzda yoqiladi.