program tip

약속 후 반환 값

radiobox 2020. 11. 9. 07:58
반응형

약속 후 반환 값


반환 메서드 후에 얻은 값을 반환하려는 자바 스크립트 함수가 있습니다. 설명보다보기 쉬움

function getValue(file){
    var val;
    lookupValue(file).then(function(res){
       val = res.val;
    }
    return val;
}

약속을 지키는 가장 좋은 방법은 무엇입니까? 내가 이해 return val했듯이 lookupValue가 완료되기 전에 반환되지만 return res.val내부 함수에서만 반환되므로 할 수 없습니다 .


다음 선을 따라 패턴을 사용하십시오.

function getValue(file) {
  return lookupValue(file);
}

getValue('myFile.txt').then(function(res) {
  // do whatever with res here
});

(이것은 약간 중복되지만 실제 코드가 더 복잡하다고 확신합니다)


이를 수행하는 가장 좋은 방법은 다음과 같이 promise 반환 함수를 그대로 사용하는 것입니다.

lookupValue(file).then(function(res) {
    // Write the code which depends on the `res.val`, here
});

비동기 함수를 호출하는 함수는 비동기 함수가 값을 반환 할 때까지 기다릴 수 없습니다. 왜냐하면 비동기 함수를 호출하고 나머지 코드를 실행하기 때문입니다. 따라서 비동기 함수가 값을 반환하면 해당 값을 호출 한 동일한 함수에서 수신되지 않습니다.

따라서 일반적인 아이디어는 비동기 함수 자체에서 비동기 함수의 반환 값에 의존하는 코드를 작성하는 것입니다.

참고 URL : https://stackoverflow.com/questions/22951208/return-value-after-a-promise

반응형