javascript - Angular promise 在服务器调用完成之前返回

标签 javascript angularjs angular-promise

我在 Angularjs Promise 中创建了一个应用程序,其中我调用一个方法,在该方法中将触发服务器调用,我放置了一个包含服务器调用的 Promise,完成后服务器调用执行将需要一些时间它将返回延迟对象,一切都很好,但 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');
} 

最佳答案

Promise 始终同步返回。你想要的(我认为)是处理已解决的 promise 。

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

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

关于javascript - Angular promise 在服务器调用完成之前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27438482/

相关文章:

javascript - 如何在 AngularJS Material 设计中创建一个简单的搜索输入文本?

javascript - Angularjs - 在 HTTPS URL 上使用 $http

javascript - Angular Controller 代码中未定义全局函数

angularjs - Angular Js : '$q.defer is not a function' error

Javascript 检查地址路径链接是否可用

javascript - 为什么我的 Google 扩展似乎仅在我观察后台脚本控制台时才开始执行

javascript - Bower 与 NPM : Which is better for installing AngularJS?

JavaScript 如果已经使用了 promise,我该如何克服 JavaScript 的异步性?

angularjs - 动态嵌套 $resource Promises 和有序 $q.all Promises

javascript - 如何检查 jQuery mobile 是否已完成转换?