prosource

공허한 약속을 angularjs로 작성하시겠습니까?

probook 2023. 3. 14. 21:45
반응형

공허한 약속을 angularjs로 작성하시겠습니까?

나는 다음과 같은 것을 하고 싶다.

var promise = IAmAEmptyPromise;

if(condition){
    promise = ApiService.getRealPromise();
}

promise.then(function(){
    //do something
});

그래서 저는 그때로 해결할 수 있는 약속을 선언하고 싶습니다.그러나 이 약속은 내용을 반환하는 다른 약속에 의해 덮어쓸 수 있습니다.나중에 내용이 있든 없든 약속을 해결하고 싶습니다.이게 가능합니까?시도 대상:

var promise = $q.defer().promise;

if(!$scope.user){
    promise = UserService.create(params);
}

promise.then(function(){
   //either user was created or the user already exists.
});

다만, 유저가 있는 경우는 동작하지 않습니다.좋은 생각 있어요?

빅시가 쓴 것처럼$q.when()약속이나 가치를 약속으로 포장하는 거죠당신이 건네주는 것이when()반환되는 약속입니다.그렇지 않으면 전달된 값으로 직접 해결되는 새로운 약속이 생성됩니다.다음과 같은 경우:

var promise;
if(!$scope.user){
  promise = UserService.create(params);
} else {
  promise = $q.when($scope.user);
}

promise.then(function(user){
  //either user was created or the user already exists.
});

네이티브 es-6 약속을 사용하는 경우 Promise.resolve()를 사용하여 즉시 해결된 약속을 만들 수 있습니다.이것은 약속을 작성할 때 유용합니다.

var p = Promise.resolve();
for (var i=0; i<something.length; i++) {
    p = p.then(UserService.create(newUsers[i]));
}
p.catch(function(e) {
    console.error('oops: ', e);
}).then(function() {
    console.log('done.');
});

언급URL : https://stackoverflow.com/questions/22506253/create-empty-promise-in-angularjs

반응형