program tip

변수가 angularjs 약속인지 알 수있는 방법이 있습니까?

radiobox 2020. 12. 10. 19:47
반응형

변수가 angularjs 약속인지 알 수있는 방법이 있습니까?


함수를 범위 매개 변수 ( scope: { method:'&theFunction' }) 로 사용하는 지시문을 만들고 있습니다. 해당 메서드에 의해 반환 된 결과가 각도 약속인지 알아야합니다 (해상도에 문제가 발생하면 즉시 발생합니다).

지금 foo.then은 존재 하는지 테스트하고 있지만 더 나은 방법이 있는지 궁금합니다.


를 사용 $q.when하여 개체를 약속으로 래핑 할 수 있습니다 (그렇지 않든). 그러면 항상 약속을 처리하고 있음을 확신 할 수 있습니다. 이렇게하면 결과를 처리하는 코드가 단순화됩니다.

에 대한 문서 $q.when여기 $ q 입니다.


Angular when()는 Davin이 언급했듯이 좋은 옵션입니다.

그것이 당신의 필요를 충족시키지 못하면 Angular의 내부 검사 방법 (내부 사용 when)은 당신이하고있는 일과 매우 가깝습니다.

var ref = function(value) {
   if (value && isFunction(value.then)) {
      // Then this is promise
   }

@kayakDave, 올바른 장소로 안내해 주셔서 감사합니다.

각도 $ q

when(value, [successCallback], [errorCallback], [progressCallback]);
            Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. 
            This is useful when you are dealing with an object that might  or might not be a promise, 
            or if the promise comes from a source that can't be trusted.
$q.when(value).then(function (data) {
//this helps me to bind data from $resource or $http or object
}

바이올린을 확인


$q.when()대답은 내가 사용하는 대부분의 사용 사례에 대한 가장 좋은 대답처럼 보인다 instanceof를 광산.

    if(buttonData instanceof $q) {
        buttonData.then(function(actions) {
            $scope.buttonActions = actions;
        });
    } else {
        $scope.button = buttonData;
    }

또는 다음 IF도 작동했지만 위의 솔루션으로 끝났습니다.

if(Object.getPrototypeOf(buttonData) === $q.prototype) {

참고 URL : https://stackoverflow.com/questions/20723735/any-way-to-know-if-a-variable-is-an-angularjs-promise

반응형