2017-11-20 1 views
2

우리 모두는 함수 콜백 지옥을 피하기 위해 약속을 사용합니다.하지만 제 질문은 이벤트 루프에서 약속 코드가 실행되고 코드가 실제로 비동기인지 여부입니다.promise가 코드를 비동기로 만드는 방법은 무엇입니까?

약속에서 실행 되었기 때문에이 코드는 비동기입니까? 또는 이벤트 루프의 일부가 아닌 약속입니까?

const p = new Promise((resolve,reject) =>{ 
 

 
    resolve('am i part of the event loop ? , am i a diffrent thread ? or am i synchronized? ') 
 

 
})

+4

"_ 어떻게하면 비동기 코드로 만들겠습니까?"그렇지 않으면 전달 된 함수가 비동기 호출을 기대합니다. – Teemu

+1

질문에있는 코드가 비동기로 실행되지 않습니다. –

+1

@ c69 : 해결 및 거부는 비동기 적으로 호출됩니다 **. *이를 호출하는 약속 생성자에 전달되는 함수입니다. 그리고이 함수는 promise 생성자에 의해 동 기적으로 실행됩니다. 비동기를 도입 할 수있는 함수의 본문입니다 (그러나 필수는 아닙니다). 함수에 비동기가없는 한 res와 rej는 동 기적으로 호출됩니다. –

답변

4

어떻게 약속 메이크 코드 비동기합니까?

아니요.

약속은 비동기 함수를 처리하기위한 표준 인터페이스 (예 : .then() 메서드)를 제공합니다.

약속 내에서 수행되는 모든 작업이 비동기 적이면 코드는 여전히 비동기입니다.

const p = new Promise((resolve, reject) => { 
 
    console.log(1); 
 
    resolve(); 
 
    console.log(2); 
 

 
}); 
 
console.log(3);

당신은 위에서 볼 수

, 약속 다른 비 비동기 코드가 그대로 차단된다.

+3

Uhhh,'.then()'핸들러는 항상 비동기 적으로 호출된다는 약간의 복잡성이 있습니다. 아마도 그 점에 대한 설명이 가치가있을 것입니다. – jfriend00

관련 문제