AMcoder - javascript, python, java, html, php, sql

Javascript-ը սպասել, որ տեղադրվեն հանգույցները ավարտվեն [կրկնօրինակ]

Ահա իմ խնդիրը. ես տվյալների մշակման համար տեղադրված օղակներ ունեմ (սա իմ ունեցածից պարզեցված տարբերակ է.

 const dataTreatment = (formData) => {
   for (let i = 0; i < formData.agencies.length; i++) {
     for(const type in formData.formTypes) {
       switch(type) {
         case 'address':
           formData[type].forEach(async (item) => {
             await axios.post('', {});
           }
           break;
         case 'schedules':
           formData[type].forEach(async (item) => {
             await axios.post('', {});
           }
           break;
       }
     }
   }
 }

Մեկ այլ ֆայլում ես կատարում եմ այս գործառույթը մյուսներից առաջ և ուզում եմ, որ այն սպասի, որ ցիկլերը ավարտվեն, բայց այն կատարում է հետևյալ գործառույթները.

const submit = async () => {
  await dataTreatment();
  await doSomethingAfter();
}

Իմ խնդիրն այն է, որ այն չի սպասում և կատարում doSomethingAfter անմիջապես հետո: Կարծում եմ, որ ինչ-որ բան բացակայում է օղակների և համաժամացման գործառույթների մասին...

Շնորհակալություն


Պատասխանները:


1

Որպեսզի await զանգերն աշխատեն, ձեր գործառույթը պետք է հայտարարվի որպես async:

 const dataTreatment = async (formData) => { // note the async word
   for (let i = 0; i < formData.agencies.length; i++) {
     for(const type in formData.formTypes) {
       switch(type) {
         case 'address':
           formData[type].forEach(async (item) => {
             await axios.post('', {});
           }
           break;
         case 'schedules':
           formData[type].forEach(async (item) => {
             await axios.post('', {});
           }
           break;
       }
     }
   }
 }

const submit = async () => {
  await dataTreatment();
  await doSomethingAfter();
}

Նույնը վերաբերում է նաև doSomethingAfter ֆունկցիային և պետք է հայտարարվի async:

14.06.2021
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..