2017-11-06 9 views
0

를 '정의되지 않은'다른 약속 수익을 호출 약속, 내 코드는왜 내가 다른 약속에서 약속을 호출해야하지만 정의되지 않은 반환 약속 한 시나리오에서 내가 몽구스와 MongoDB를 작업 내 응용 프로그램에서

function first (num) { 
 
    return new Promise(function(resolve,reject){ 
 
    if(num % 2 === 0){ 
 
     resolve(num); 
 
    } 
 
    else{ 
 
     reject('Error Happend'); 
 
    } 
 
    }) 
 
} 
 

 

 
function second(num){ 
 
first(num).then(function(res){ 
 
    return res; 
 
}).catch(function(err){ 
 
    return err; 
 
}) 
 
} 
 

 
console.log(second(2))
<script src="https://cdn.jsdelivr.net/bluebird/latest/bluebird.js"></script>
나는 SF 검색이에 대한 몇 가지 주제를 찾을 수 있지만 아무것도 내 문제를 해결할 수 없으며,이 경우

은 내가 2second에 기능을 전달하고 나는 그것을 2를 반환하고 싶지만 정의되지 않은 반환합니다.

+1

'second'는 아무것도 반환하지 않습니까? 모든 return 문은 일부 콜백에 있습니다. – Bergi

+0

@Bergi, 고마워, 어떻게 이것을 '돌아 가기'로 해결할 수 – MBehtemam

+1

수 없습니다. 약속은 비동기입니다. 할 수있는 일은 ('then' 또는'catch'를 호출하여 생성 된) 새로운 약속을 반환 한 다음 호출에서'second (2) .then (console.log)'를 사용하는 것입니다. – Bergi

답변

2

second(2)의 반환 값을 기록하지만 second 함수에는 return 문이 없으므로 항상 undefined을 반환합니다. 함수 표현하면 thencatch에 전달

주 (return 문을 수행 second 함수 자체되지 않습니다).