async 및 await가 올바르게 작동하지 않습니다.

매직 데브

비동기를 사용하고 내 반응 js 앱을 기다리고 있습니다. 하지만 제대로 작동하지 않습니다.

const handleFinish = async () => {
    const startDateString = startDate.format('YYYY-MM-DDThh:mm');
    const endDateString = endDate.format('YYYY-MM-DDThh:mm');
    const createdString = moment().format('YYYY-MM-DDThh:mm');
    const requestData = [];
    const previousData = [];
    selectedCustomerData.forEach(customer => {
      selectedProductData.forEach(product => {
        previousData.push({
          customer: customer,
          product: product
        });
      });
    });
    await previousData.forEach(async element => {
      const tempStartDate = moment().add(element.customer.leadtime, 'days');
      const apiUrl = '/productprice/?customerid=' + element.customer.customerid + 
                      '&productkey=' + element.product.productkey + 
                      '&isrulendNull=true';
      await api.get(apiUrl).then(response => {
        let newPrice = 0;
        if (priceMethod === 'fixed') {
          newPrice = price;
        } else if (priceMethod === 'specific') {
          newPrice = response.data[0].productpriceusd + price;
        } else if (priceMethod === 'relative') {
          newPrice = response.data[0].productpriceusd % 100.0 * (100.0 + price);
        }
        requestData.push({
          productkey: element.product.productkey,
          productcode: element.product.productcode,
          customerid: element.customer.customerid,
          customerchain: element.customer.customerchain,
          productpriceusd: newPrice,
          rulestart: (tempStartDate > startDate) ? tempStartDate.format('YYYY-MM-DDThh:mm') : startDateString,
          ruleend: endDateString,
          creatorupn: user.data.displayName,
          created: createdString,
          customername: element.customer.customername,
          productdescription: element.product.productdescription,
        });
      });
    });
    console.log(requestData);
    setPricesList(requestData);
  };

foreach 후에 requestData 배열을 예상했습니다. 그러나 해당 console.log는 foreach 후에 발생하지 않고 foreach 전에 발생합니다. 즉, async 및 await가 작동하지 않습니다. 내 코드에 무엇이 잘못 되었나요?

Potados

Array.forEach() 주어진 비동기 함수에서 모든 요소가 처리 될 때까지 기다리지 않습니다.

다음 for과 같은 일반 루프 를 사용할 수 있습니다 .

const handleFinish = async () => {
    const startDateString = startDate.format('YYYY-MM-DDThh:mm');
    const endDateString = endDate.format('YYYY-MM-DDThh:mm');
    const createdString = moment().format('YYYY-MM-DDThh:mm');
    const requestData = [];
    const previousData = [];
    selectedCustomerData.forEach(customer => {
      selectedProductData.forEach(product => {
        previousData.push({
          customer: customer,
          product: product
        });
      });
    });

    for (const element of previousData) {
      const tempStartDate = moment().add(element.customer.leadtime, 'days');
      const apiUrl = '/productprice/?customerid=' + element.customer.customerid + 
                      '&productkey=' + element.product.productkey + 
                      '&isrulendNull=true';
      await api.get(apiUrl).then(response => {
        let newPrice = 0;
        if (priceMethod === 'fixed') {
          newPrice = price;
        } else if (priceMethod === 'specific') {
          newPrice = response.data[0].productpriceusd + price;
        } else if (priceMethod === 'relative') {
          newPrice = response.data[0].productpriceusd % 100.0 * (100.0 + price);
        }
        requestData.push({
          productkey: element.product.productkey,
          productcode: element.product.productcode,
          customerid: element.customer.customerid,
          customerchain: element.customer.customerchain,
          productpriceusd: newPrice,
          rulestart: (tempStartDate > startDate) ? tempStartDate.format('YYYY-MM-DDThh:mm') : startDateString,
          ruleend: endDateString,
          creatorupn: user.data.displayName,
          created: createdString,
          customername: element.customer.customername,
          productdescription: element.product.productdescription,
        });
      });
    }

    console.log(requestData);
    setPricesList(requestData);
  };

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

groupby 및 count가 올바르게 작동하지 않습니다.

분류에서Dev

Await 및 Async를 올바르게 사용

분류에서Dev

JTextField getText ()가 올바르게 작동하지 않습니다.

분류에서Dev

Stringtoword 벡터가 올바르게 작동하지 않습니다.

분류에서Dev

cakephp findbyid가 올바르게 작동하지 않습니다.

분류에서Dev

IIF가 올바르게 작동하지 않습니다.

분류에서Dev

내 if / else가 올바르게 작동하지 않습니다.

분류에서Dev

Listview가 올바르게 작동하지 않습니다.

분류에서Dev

await가 collection.insertMany ()에 대해 올바르게 작동하지 않습니까?

분류에서Dev

Wordpress walker가 작동하지만 올바르게 작동하지 않습니다.

분류에서Dev

is_page 및 query_posts가 올바르게 작동하지 않음

분류에서Dev

고정 위치 및 플로트가 올바르게 작동하지 않음

분류에서Dev

ThreadStart 및 ParameterizedThreadStart가 올바르게 작동하도록 할 수 없습니다.

분류에서Dev

async 및 await가 asp.net MVC에서 작동하지 않음

분류에서Dev

Codeigniter 쿼리 작성기가 올바르게 작동하지 않습니다.

분류에서Dev

NumberFormatter 최소가 올바르게 작동하지 않습니까?

분류에서Dev

switch case 문에서 async await가 작동하지 않습니다.

분류에서Dev

Nodejs promise async / await가 제대로 작동하지 않습니다.

분류에서Dev

React Native async / await가 제대로 작동하지 않습니다.

분류에서Dev

JavaScript window.innerwidth가 올바르게 작동하지 않습니다.

분류에서Dev

React Native의 Expo 카메라가 올바르게 작동하지 않습니다.

분류에서Dev

pushReplacementNamed가 서랍에서 올바르게 작동하지 않습니다.

분류에서Dev

scanf ()가 for 루프 내에서 올바르게 작동하지 않습니다.

분류에서Dev

Ref가 내 설정에서 올바르게 작동하지 않습니다.

분류에서Dev

SwiftUI ForEach.onDelete가 TabView에서 올바르게 작동하지 않습니다.

분류에서Dev

C의 getopt ()가 if 문 후에 올바르게 작동하지 않습니다.

분류에서Dev

SQL Select 문 SubSelect가 올바르게 작동하지 않습니다.

분류에서Dev

getWidth가 클래스 변수로 올바르게 작동하지 않습니다.

분류에서Dev

연결 문자열 NSPredicate가 올바르게 작동하지 않습니다.

Related 관련 기사

  1. 1

    groupby 및 count가 올바르게 작동하지 않습니다.

  2. 2

    Await 및 Async를 올바르게 사용

  3. 3

    JTextField getText ()가 올바르게 작동하지 않습니다.

  4. 4

    Stringtoword 벡터가 올바르게 작동하지 않습니다.

  5. 5

    cakephp findbyid가 올바르게 작동하지 않습니다.

  6. 6

    IIF가 올바르게 작동하지 않습니다.

  7. 7

    내 if / else가 올바르게 작동하지 않습니다.

  8. 8

    Listview가 올바르게 작동하지 않습니다.

  9. 9

    await가 collection.insertMany ()에 대해 올바르게 작동하지 않습니까?

  10. 10

    Wordpress walker가 작동하지만 올바르게 작동하지 않습니다.

  11. 11

    is_page 및 query_posts가 올바르게 작동하지 않음

  12. 12

    고정 위치 및 플로트가 올바르게 작동하지 않음

  13. 13

    ThreadStart 및 ParameterizedThreadStart가 올바르게 작동하도록 할 수 없습니다.

  14. 14

    async 및 await가 asp.net MVC에서 작동하지 않음

  15. 15

    Codeigniter 쿼리 작성기가 올바르게 작동하지 않습니다.

  16. 16

    NumberFormatter 최소가 올바르게 작동하지 않습니까?

  17. 17

    switch case 문에서 async await가 작동하지 않습니다.

  18. 18

    Nodejs promise async / await가 제대로 작동하지 않습니다.

  19. 19

    React Native async / await가 제대로 작동하지 않습니다.

  20. 20

    JavaScript window.innerwidth가 올바르게 작동하지 않습니다.

  21. 21

    React Native의 Expo 카메라가 올바르게 작동하지 않습니다.

  22. 22

    pushReplacementNamed가 서랍에서 올바르게 작동하지 않습니다.

  23. 23

    scanf ()가 for 루프 내에서 올바르게 작동하지 않습니다.

  24. 24

    Ref가 내 설정에서 올바르게 작동하지 않습니다.

  25. 25

    SwiftUI ForEach.onDelete가 TabView에서 올바르게 작동하지 않습니다.

  26. 26

    C의 getopt ()가 if 문 후에 올바르게 작동하지 않습니다.

  27. 27

    SQL Select 문 SubSelect가 올바르게 작동하지 않습니다.

  28. 28

    getWidth가 클래스 변수로 올바르게 작동하지 않습니다.

  29. 29

    연결 문자열 NSPredicate가 올바르게 작동하지 않습니다.

뜨겁다태그

보관