2017-03-10 2 views
0

then의 콜백이 호출되지 않을 가능성이있는 이유는 무엇입니까? 예 :

function testPromise() { 
    console.log("this gets logged") 
    return $q(function(resolve, reject) { 
    console.log("this too") 
    resolve("test") 
    console.log("and this"); 
    $rootScope.$apply() 
    console.log("and this too"); 
    }) 
} 
testPromise().then(function(result){ 
    console.log("this never gets logged") 
}); 

나는 뭔가 명확하지 않습니까? 고맙습니다.

+1

비슷한 질문이 ** ** ** 번 ** 전에 네가 생각하기는하지만 ** 특정 문제는 return 문에서 전에가 아닌 return 문에서'$ rootScope. $ apply()'를 호출하여 발생한다. 추가 다이제스트. '$ rootScope. $ digest()'를'$ rootScope. $ apply()'바로 앞에 추가하십시오. –

+1

확실히'$ q'는 resolve/reject 모두에 대한 스코프 다이제스트를 단독으로 트리거합니다. 수동으로 추가 할 필요가 없습니다. – Phil

+0

Phil과 동의합니다. 실제로 어떤 이유로 든 $ apply()를 호출하는 데 문제가 있습니다. – moplin

답변

0

답장을 보내 주셔서 감사합니다. 그것이 밝혀졌고 여러분 중 일부는 내가이 함수를 어디에서 호출했는지와 관련이 있다고 언급했습니다. 따라서 정규 함수 호출이 작동합니다. then의 콜백에서 전화를 걸었지만 context.sync().then()에서 전화를 걸었습니다. context.sync()Word Add-in의 약속입니다. (실제로 무엇인지 압니다.) - 그렇지 않습니다. 그래서 나는 콜백을하기 위해 함수를 변환하는 것을 끝내었다.

0

사용중인 AngularJS 버전에 따라 다릅니다.

AngularJS 1.2 $q was not a function에 대신 "지연된"항목을 만들고 별도로 약속을 반환해야합니다.

그러나이 경우 콘솔에 오류가 표시됩니다.

0

모두는 $rootScope.$apply()의 전화 번호에 따라 다릅니다. 다이제스트주기의 실행 기간 중에 호출하면 오류가 발생하고 스크립트 실행이 중지됩니다.

예제는 $rootScope.$apply()없이 완벽하게 작동합니다. 어떻게 사용하려고했는지 더 많은 맥락을 제시 할 수 있습니까?

0

이 정보가 도움이되기를 바랍니다. $ q를 사용하는 방법입니다. 그래서 나는 실제적인 예를 만들었습니다.

예를 들어 서비스 내에서 $ q를 사용하고 $ timeout을 사용하여 응답을 지연합니다. $ apply()를 삭제했는데 왜 사용하고 있는지 잘 모릅니다.

app.factory('TestingService', TestingService); 
    function TestingService($q, $timeout) { 
    return {runPromise:runPromise}; 
    function runPromise() { 
     return $q(function(resolve, reject) { 
      console.log("inside my $q") 
      $timeout(function(){ 
      resolve("$q is working fine"); 
      }, 2000); //Lets use $timeout, just to see the result 
     }); 
    }; 
    } 

와 나는 그것이 도움이되기를 바랍니다

https://jsfiddle.net/moplin/r0vda86d/

다음

TestingService.runPromise().then(
    function(result){ 
    console.log('result::',result); 
    vm.test = result; 
}); 
.

관련 문제