ԽՈՐՀՈՒՐԴՆԵՐ ԵՒ ՀՆԱՐՔՆԵՐ

Ինչպես ռեկուրսիվ կերպով զանգահարել API-ներ՝ JavaScript-ում բոլոր արդյունքները ստանալու համար

Ինչպես ռեկուրսիվ կերպով ստանալ արդյունքներ յուրաքանչյուր էջի համար և վերջապես դրանք վերադարձնել մեկ արդյունքի հավաքածուի մեջ:

Մարտահրավեր

Ժամանակի մեծ մասը JavaScript նախագծի վրա աշխատելիս ես որոշակի կոդ եմ գրում REST API-ներ կանչելու համար: Սա նորմալ է։

Այնուամենայնիվ, երբեմն REST API-ն կարող է սահմանափակումներ ունենալ յուրաքանչյուր հարցումով վերադարձվող իրերի քանակի վրա: Այլ կերպ ասած, որոշ տարրեր ստանալու համար API-ին կանչելիս այդ տարրերը կբաժանվեն ինդեքսավորված էջերի/խմբերի, և դուք պետք է տրամադրեք էջի/խմբի ինդեքսը: Սա կվերադարձնի միայն այս էջի/խմբի տարրերը: Մնացածը ստանալու համար ձեզ հարկավոր է կրկնել նույն API զանգը, բայց հիմա այլ ինդեքսով և այլն…



Ինչպե՞ս դա անել:

Սա այն է, ինչ ես պատրաստվում եմ ձեզ ցույց տալ այս հոդվածում: Մենք պատրաստվում ենք օգտագործել API-ի պարզ օրինակ, որը ապրանքները վերադարձնում է էջեր և տեսնել, թե ինչպես օգտագործել այս API-ն և ստանալ բոլոր տարրերը:

Մենք մոդելավորելու ենք API-ի զանգը մի ֆունկցիայով, որը վերադարձնում է խոստում և ժամանցի զանգ: Նյութերը կվերցվեն տարրերի ստատիկ զանգվածից, որը մենք կսահմանենք:

Կարևոր է նաև նշել, որ ստատիկ զանգվածի տարրերը էջերի բաժանելու տրամաբանությունը հիմնված է վերլուծության, հավասարումների և կոդի վրա, որոնք ներկայացված են Paging/Partitioning — Իմացեք հիմնական հավասարումները հեշտացնելու համար հոդվածում: ուժեղ>».

Այստեղ, այս հոդվածում, ես պարզապես կներառեի կոդը հակիրճության համար:

Եկեք որոշ կոդ գրենք

Զանգվածի էջի գործառույթ

Մանրամասների համար տես այս հոդվածը:

Ստատիկ տարրերի զանգված և կանխադրված էջի չափ

Կատարել API զանգի գործառույթը

Այն, ինչ մենք կարող ենք նկատել այստեղ.

  1. Սա այն ֆունկցիան է, որը մոդելավորում է API-ի զանգը:
  2. Նախ այն ստատիկ items զանգվածը բաժանում է էջերի՝ օգտագործելով ստատիկ pageSize փոփոխականը: Կախված pageZeroIndex-ում անցած պարամետրից՝ սահմանում է itemsToReturn ներքին զանգվածը:
  3. Այնուհետև այն փաթաթում է վերջնական օբյեկտի մեջ, որն ունի paging.pageZeroIndex և page.totalPagesCount անդամներ: Դրանք պետք է օգտագործվեն API զանգահարողի կողմից՝ իմանալու համար՝ կան այլ էջեր, թե ոչ:
  4. Վերջապես, այս վերջնական օբյեկտը լուծվում է խոստումով մեկ վայրկյանից հետո:

Արդյունքներ ստանալ՝ օգտագործելով հնաոճ խոստումները

Այն, ինչ մենք կարող ենք նկատել այստեղ.

  1. Մենք API-ն կանչում ենք ռեկուրսիվ եղանակով, բայց լուծում ենք միայն տարրերի վերջում:
  2. Մենք օգտագործում ենք page.totalPagesCount-ը որոշելու համար՝ կարող է լինել մեկ այլ էջ, թե ոչ:

Թեստավորում, որը կոչում է հնաոճ օրենսգիրք

Եվ արդյունքը կլինի հետևյալը.

Արդյունքների ստացում` օգտագործելով async/wait

Այն, ինչ մենք կարող ենք նկատել այստեղ, այն է, որ մենք անում ենք նույնը, ինչ հնաոճ օրենսգրքում, բայց այստեղ ավելի պարզ է:

Փորձարկում Զանգում է async/wait Code

Եվ արդյունքը կլինի հետևյալը.

Հուսով եմ, որ այս բովանդակությունը ձեզ համար օգտակար էր: Եթե ​​ցանկանում եք աջակցել.

▶ Եթե դեռ Medium անդամ չեք, կարող եք օգտագործել իմ ուղղորդման հղումը, որպեսզի կարողանամ ստանալ ձեր վճարների մի մասը Medium-ից։ >, դուք հավելյալ չեք վճարում:
▶ Բաժանորդագրվեք իմ տեղեկագրին-ին, որպեսզի ստանաք լավագույն փորձը, ձեռնարկները, հուշումները, խորհուրդները և շատ այլ հետաքրքիր բաներ անմիջապես ձեր մուտքի արկղում:

Այլ ռեսուրսներ

Սրանք այլ ռեսուրսներ են, որոնք կարող եք օգտակար լինել:





Ահա և վերջ, հուսով եմ, որ ձեզ համար այս պատմությունը նույնքան հետաքրքիր է, որքան ես գրել եմ այն:

Ավելի շատ բովանդակություն plainenglish.io կայքում