함수가 종료되도록 약속 거부를 처리하는 올바른 방법은 무엇입니까?

now_world

이 코드가 있다고 가정 해 봅시다.

function doSomething() {
    const foo = await new Promise((resolve, reject) => {
        //...
        reject();
    }).catch(error => {
        //I'd like to exit the doSomething function since the promise rejected
        return;//This only exists the this arrow funtion
    });

    console.log('Should not get to here if foo rejects');
}

경우 foo반환 거부 약속, 그때 종료하고 싶습니다 doSomething(),하지만 위의 코드는이 작업을 수행하지 않습니다. 대신가 error포착되었으므로 코드가 계속됩니다.

catch거부 된 약속을 수행하지 않으면 오류가 발생합니다. UnhandledPromiseRejectionWarning:

function doSomething() {
    const foo = await new Promise((resolve, reject) => {
        //...
        reject();
    });
    console.log('Should not get to here if foo rejects');
}

나는 이것을 할 수 있다는 것을 알고 있지만 이것은 단지 지저분하다.

function doSomething() {
    let exitFunction = false;
    const foo = await new Promise((resolve, reject) => {
        //...
        reject();
    }).catch(error => {
        //I'd like to exit the doSomething function since the promise rejected
        exitFunction = true;
    });

    if (exitFunction) {
       return;
    }

    console.log('Should not get to here if foo rejects');
}

그렇다면 이와 같은 것을 처리하는 가장 좋은 방법은 무엇입니까? 이렇게 할 수 있으면 좋을 것입니다.

function doSomething() {
    const foo = await new Promise((resolve, reject) => {
        //...
        reject();
    });
    if (foo.rejected) {
        return;
    }
    console.log('Should not get to here if foo rejects');
}

또는 이것도 :

function doSomething() {
    const foo = await new Promise((resolve, reject) => {
        //...
        reject();
    }).catch(error => {
        return function2;//Sort of like JS's `break loop2;`
    });
    console.log('Should not get to here if foo rejects');
}

다른 사람이 내 고통을 느끼는가? 그렇다면 이것을 처리하는 가장 좋은 (가장 깨끗한) 방법은 무엇입니까?

hgb123

try/catch약속을 처리 하는 경우 사용 하는 것이 좋습니다 .async function

function promiseFunc() {
  return new Promise((resolve, reject) => {
    //...
    reject("error!");
  });
}

async function doSomething() {
  try {
    const foo = await promiseFunc();
  } catch (err) {
    console.log(err);
    return;
  }

  console.log("Should not get to here if foo rejects");
}

doSomething();

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

속기 표기법을 사용하여 반향되는 PHP 변수를 주석 처리하는 올바른 방법은 무엇입니까?

분류에서Dev

변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

분류에서Dev

약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

분류에서Dev

약속이 거부 된 것이 무엇인지 파악하는 올바른 방법은 무엇입니까?

분류에서Dev

루트가 아닌 사용자가 종료 또는 재부팅을 실행하지 못하도록하는 올바른 방법은 무엇입니까?

분류에서Dev

다양한 JSON 스키마를 처리하고 올바른 파서가 처리하도록 헴을 보내는 방법은 무엇입니까?

분류에서Dev

마지막 명령의 종료 코드를 처리하는 올바른 방법은 무엇입니까?

분류에서Dev

jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

Linux에서 CPU 속도를 보는 올바른 방법은 무엇입니까?

분류에서Dev

변수가 클래스 내의 다른 변수에 종속되도록하는 방법은 무엇입니까?

분류에서Dev

항상 약속을 반환하지 않는 함수를 처리하는 방법은 무엇입니까?

분류에서Dev

처리되지 않은 약속 거부를 비동기 적으로 처리하는 방법은 무엇입니까?

분류에서Dev

Windows 8에서 빠른 종료를 수행하지 않도록 지시하는 방법은 무엇입니까?

분류에서Dev

종료되는`AsyncIterator`로 소비 할 수 있도록 Node`EventEmitter`를 래핑하는 방법은 무엇입니까?

분류에서Dev

현재 셸에서 함수를 가져와 나중에 사용할 수 있도록 저장하는 올바른 방법은 무엇입니까?

분류에서Dev

사용자가 상태 약어를 입력하고 약어 목록과 일치하도록 거부하거나 수락하는 방법은 무엇입니까?

분류에서Dev

포착 된 예외를 저장하고 시스템 종료 처리 목적으로 함수 외부에서 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

평균 프레임 속도를 계산하는 올바른 방법은 무엇입니까?

분류에서Dev

React + Redux에서 감속기에 인수를 전달하는 올바른 방법은 무엇입니까?

분류에서Dev

VB.NET : DataGridView SelectionChange 이벤트가 처리되지 않도록 / 거부하는 방법은 무엇입니까?

분류에서Dev

가치가 클로저보다 오래 지속되는 경우 클로저간에 참조를 공유하는 올바른 방법은 무엇입니까?

분류에서Dev

Java-외부 ExecutorService에서 종료가 호출 될 때 다른 ExecutorService 내에서 실행되는 ExecutorService가 종료되지 않도록하는 방법은 무엇입니까?

분류에서Dev

약속의 모든 코드가 해결되기 전에 완료되기를 기다리는 방법은 무엇입니까? (하지만 조금 더 복잡함)

분류에서Dev

Codeigniter-스크립트 실행 속도가 느림-올바른 컨트롤러 및 메서드를 추적하는 방법은 무엇입니까?

분류에서Dev

함수가 다른 함수를 식별하도록하는 방법은 무엇입니까? 파이썬

분류에서Dev

tornado.subprocess를 종료 / 종료하고 반환 코드를 얻는 올바른 방법은 무엇입니까?

분류에서Dev

함수 호출에서 예외가 발생하면 처리를 계속하는 방법은 무엇입니까?

분류에서Dev

이 약속 기반 SQL 쿼리를 올바르게 실행하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    속기 표기법을 사용하여 반향되는 PHP 변수를 주석 처리하는 올바른 방법은 무엇입니까?

  2. 2

    변수에서 약속 데이터를 가져 오는 올바른 방법은 무엇입니까?

  3. 3

    약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

  4. 4

    약속 체인이 해결되지 않습니다. 수정하는 올바른 방법은 무엇입니까?

  5. 5

    약속이 거부 된 것이 무엇인지 파악하는 올바른 방법은 무엇입니까?

  6. 6

    루트가 아닌 사용자가 종료 또는 재부팅을 실행하지 못하도록하는 올바른 방법은 무엇입니까?

  7. 7

    다양한 JSON 스키마를 처리하고 올바른 파서가 처리하도록 헴을 보내는 방법은 무엇입니까?

  8. 8

    마지막 명령의 종료 코드를 처리하는 올바른 방법은 무엇입니까?

  9. 9

    jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

  10. 10

    Linux에서 CPU 속도를 보는 올바른 방법은 무엇입니까?

  11. 11

    변수가 클래스 내의 다른 변수에 종속되도록하는 방법은 무엇입니까?

  12. 12

    항상 약속을 반환하지 않는 함수를 처리하는 방법은 무엇입니까?

  13. 13

    처리되지 않은 약속 거부를 비동기 적으로 처리하는 방법은 무엇입니까?

  14. 14

    Windows 8에서 빠른 종료를 수행하지 않도록 지시하는 방법은 무엇입니까?

  15. 15

    종료되는`AsyncIterator`로 소비 할 수 있도록 Node`EventEmitter`를 래핑하는 방법은 무엇입니까?

  16. 16

    현재 셸에서 함수를 가져와 나중에 사용할 수 있도록 저장하는 올바른 방법은 무엇입니까?

  17. 17

    사용자가 상태 약어를 입력하고 약어 목록과 일치하도록 거부하거나 수락하는 방법은 무엇입니까?

  18. 18

    포착 된 예외를 저장하고 시스템 종료 처리 목적으로 함수 외부에서 사용하는 올바른 방법은 무엇입니까?

  19. 19

    평균 프레임 속도를 계산하는 올바른 방법은 무엇입니까?

  20. 20

    React + Redux에서 감속기에 인수를 전달하는 올바른 방법은 무엇입니까?

  21. 21

    VB.NET : DataGridView SelectionChange 이벤트가 처리되지 않도록 / 거부하는 방법은 무엇입니까?

  22. 22

    가치가 클로저보다 오래 지속되는 경우 클로저간에 참조를 공유하는 올바른 방법은 무엇입니까?

  23. 23

    Java-외부 ExecutorService에서 종료가 호출 될 때 다른 ExecutorService 내에서 실행되는 ExecutorService가 종료되지 않도록하는 방법은 무엇입니까?

  24. 24

    약속의 모든 코드가 해결되기 전에 완료되기를 기다리는 방법은 무엇입니까? (하지만 조금 더 복잡함)

  25. 25

    Codeigniter-스크립트 실행 속도가 느림-올바른 컨트롤러 및 메서드를 추적하는 방법은 무엇입니까?

  26. 26

    함수가 다른 함수를 식별하도록하는 방법은 무엇입니까? 파이썬

  27. 27

    tornado.subprocess를 종료 / 종료하고 반환 코드를 얻는 올바른 방법은 무엇입니까?

  28. 28

    함수 호출에서 예외가 발생하면 처리를 계속하는 방법은 무엇입니까?

  29. 29

    이 약속 기반 SQL 쿼리를 올바르게 실행하는 방법은 무엇입니까?

뜨겁다태그

보관