ԽՈՐՀՈՒՐԴՆԵՐ ԵՒ ՀՆԱՐՔՆԵՐ
Ինչպես ռեկուրսիվ կերպով զանգահարել API-ներ՝ JavaScript-ում բոլոր արդյունքները ստանալու համար
Ինչպես ռեկուրսիվ կերպով ստանալ արդյունքներ յուրաքանչյուր էջի համար և վերջապես դրանք վերադարձնել մեկ արդյունքի հավաքածուի մեջ:
Մարտահրավեր
Ժամանակի մեծ մասը JavaScript նախագծի վրա աշխատելիս ես որոշակի կոդ եմ գրում REST API-ներ կանչելու համար: Սա նորմալ է։
Այնուամենայնիվ, երբեմն REST API-ն կարող է սահմանափակումներ ունենալ յուրաքանչյուր հարցումով վերադարձվող իրերի քանակի վրա: Այլ կերպ ասած, որոշ տարրեր ստանալու համար API-ին կանչելիս այդ տարրերը կբաժանվեն ինդեքսավորված էջերի/խմբերի, և դուք պետք է տրամադրեք էջի/խմբի ինդեքսը: Սա կվերադարձնի միայն այս էջի/խմբի տարրերը: Մնացածը ստանալու համար ձեզ հարկավոր է կրկնել նույն API զանգը, բայց հիմա այլ ինդեքսով և այլն…
Ինչպե՞ս դա անել:
Սա այն է, ինչ ես պատրաստվում եմ ձեզ ցույց տալ այս հոդվածում: Մենք պատրաստվում ենք օգտագործել API-ի պարզ օրինակ, որը ապրանքները վերադարձնում է էջեր և տեսնել, թե ինչպես օգտագործել այս API-ն և ստանալ բոլոր տարրերը:
Մենք մոդելավորելու ենք API-ի զանգը մի ֆունկցիայով, որը վերադարձնում է խոստում և ժամանցի զանգ: Նյութերը կվերցվեն տարրերի ստատիկ զանգվածից, որը մենք կսահմանենք:
Կարևոր է նաև նշել, որ ստատիկ զանգվածի տարրերը էջերի բաժանելու տրամաբանությունը հիմնված է վերլուծության, հավասարումների և կոդի վրա, որոնք ներկայացված են Paging/Partitioning — Իմացեք հիմնական հավասարումները հեշտացնելու համար հոդվածում: ուժեղ>».
Այստեղ, այս հոդվածում, ես պարզապես կներառեի կոդը հակիրճության համար:
Եկեք որոշ կոդ գրենք
Զանգվածի էջի գործառույթ
Մանրամասների համար տես այս հոդվածը:
Ստատիկ տարրերի զանգված և կանխադրված էջի չափ
Կատարել API զանգի գործառույթը
Այն, ինչ մենք կարող ենք նկատել այստեղ.
- Սա այն ֆունկցիան է, որը մոդելավորում է API-ի զանգը:
- Նախ այն ստատիկ
items
զանգվածը բաժանում է էջերի՝ օգտագործելով ստատիկpageSize
փոփոխականը: ԿախվածpageZeroIndex
-ում անցած պարամետրից՝ սահմանում էitemsToReturn
ներքին զանգվածը: - Այնուհետև այն փաթաթում է վերջնական օբյեկտի մեջ, որն ունի
paging.pageZeroIndex
ևpage.totalPagesCount
անդամներ: Դրանք պետք է օգտագործվեն API զանգահարողի կողմից՝ իմանալու համար՝ կան այլ էջեր, թե ոչ: - Վերջապես, այս վերջնական օբյեկտը լուծվում է խոստումով մեկ վայրկյանից հետո:
Արդյունքներ ստանալ՝ օգտագործելով հնաոճ խոստումները
Այն, ինչ մենք կարող ենք նկատել այստեղ.
- Մենք API-ն կանչում ենք ռեկուրսիվ եղանակով, բայց լուծում ենք միայն տարրերի վերջում:
- Մենք օգտագործում ենք
page.totalPagesCount
-ը որոշելու համար՝ կարող է լինել մեկ այլ էջ, թե ոչ:
Թեստավորում, որը կոչում է հնաոճ օրենսգիրք
Եվ արդյունքը կլինի հետևյալը.
Արդյունքների ստացում` օգտագործելով async/wait
Այն, ինչ մենք կարող ենք նկատել այստեղ, այն է, որ մենք անում ենք նույնը, ինչ հնաոճ օրենսգրքում, բայց այստեղ ավելի պարզ է:
Փորձարկում Զանգում է async/wait Code
Եվ արդյունքը կլինի հետևյալը.
Հուսով եմ, որ այս բովանդակությունը ձեզ համար օգտակար էր: Եթե ցանկանում եք աջակցել.
▶ Եթե դեռ Medium անդամ չեք, կարող եք օգտագործել իմ ուղղորդման հղումը, որպեսզի կարողանամ ստանալ ձեր վճարների մի մասը Medium-ից։ >, դուք հավելյալ չեք վճարում:
▶ Բաժանորդագրվեք իմ տեղեկագրին-ին, որպեսզի ստանաք լավագույն փորձը, ձեռնարկները, հուշումները, խորհուրդները և շատ այլ հետաքրքիր բաներ անմիջապես ձեր մուտքի արկղում:
Այլ ռեսուրսներ
Սրանք այլ ռեսուրսներ են, որոնք կարող եք օգտակար լինել:
Ահա և վերջ, հուսով եմ, որ ձեզ համար այս պատմությունը նույնքան հետաքրքիր է, որքան ես գրել եմ այն:
Ավելի շատ բովանդակություն plainenglish.io կայքում