codememo

앵귤러 블루버드는 어떻게 사용하나요?

tipmemo 2023. 2. 16. 21:45
반응형

앵귤러 블루버드는 어떻게 사용하나요?

블루버드와 함께 앵글을 사용해 보았습니다.

HTML:

<body ng-app="HelloApp">
    <div ng-controller="HomeController">{{name}} {{also}}</div>
</body>

JS:

// javascript
var app = angular.module('HelloApp', []);

app.controller("HomeController", function ($scope) {
    var p = Promise.delay(1000).then(function () {
        $scope.name = "Bluebird!";
        console.log("Here!", $scope.name);
    }).then(function () {
        $scope.also = "Promises";
    });
    $scope.name = "$q";
    $scope.also = "promises";
});

window.app = app;

[휘청]

하지만, 아무리 노력해도, 그것은 계속 남아있었다."$q promises"업데이트하지 않았습니다.매뉴얼을 추가했을 경우는 예외입니다.$scope.$apply차라리 피하고 싶군요

Bluebird와 AngularJS를 함께 사용하려면 어떻게 해야 하나요?

($q이면 가능하기 때문에 가능함을 알고 있습니다.

저는 여기서 받은 Bluebird 2.0을 사용하고 있습니다.

이것은 가능하고, 심지어 꽤 쉽다!

앵글이 약속을 보면 블루버드를 데려와야 해$evalAsync똑같은 행동을 할 수 있도록 어딘가에서요

이 경우 두 구현 모두 Promise/A+를 준수한다는 것은 서로 상호 운용할 수 있다는 것을 의미합니다.$q코드와 Bluebird 코드. 즉, Angular 코드에 있는 Bluebird의 모든 기능을 자유롭게 사용할 수 있습니다.

Bluebird는 다음과 같은 기능을 제공합니다.

// after this, all promises will cause digests like $q promises.
function trackDigests(app) {
    app.run(["$rootScope",function ($rootScope) {
        Promise.setScheduler(function (cb) {
            $rootScope.$evalAsync(cb);
        });
    }]);
}

이제 다음 항목만 추가하면 됩니다.

trackDigests(app); 

의 뒤를 잇다var app = ...모든 것이 예상대로 작동하게 됩니다.보너스 포인트의 경우 Bluebird를 서비스에 배치하여 글로벌 네임스페이스에서 사용하지 않고 삽입할 수 있도록 합니다.

이 동작을 나타내는 [만지작거리다]가 있습니다.

Bluebird의 모든 기능 외에$q더 중요한 것 중 하나는 Bluebird가 뛰지 않는다는 것이다.$exceptionHandler대신 처리되지 않은 거부는 자동으로 추적되므로throw블루버드와의 약속을 풀어낼 수 있을 거예요더 많은 전화Promise.longStackTraces()디버깅에 많은 도움이 됩니다.

라이브러리 Angular Bluebird 약속 대체$q에 봉사하다.bluebird.$http블루버드를 통과하다

언급URL : https://stackoverflow.com/questions/23984471/how-do-i-use-bluebird-with-angular

반응형