角度承诺在服务器调用完成之前返回

时间:2014-12-12 07:00:50

标签: javascript angularjs angular-promise

我在angularjs promise中创建了一个应用程序,我在其中调用一个方法,在该方法中将触发服务器调用,我已经发出了一个包含服务器调用的承诺,服务器调用执行将花费一些时间,在完成之后它将返回延迟对象,一切都很好,但承诺在服务器调用完成之前返回

我在 JSFiddle

中模拟了类似的情况
function getServerCall() {
    var deferred = $q.defer();
    setInterval(function () {
            $scope.$apply(function () {
                deferred.resolve({
                    "success": true
                });
            });
    }, 3000);

    return deferred.promise;
}

console.log(JSON.stringify(getServerCall().success));
if (getServerCall().success)
{
    console.log('Success');
} 
else{
   console.log('Failed');
} 

1 个答案:

答案 0 :(得分:2)

Promise总是同步返回。你想要的(我认为)是处理已解决的承诺。

因此,您需要使用.then(这是承诺上可用的方法):

getServerCall()
  .then(function(result){
     if (result.success) { 
        console.log("success");
     } else {
        console.log("failed")
     }
  });