我在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');
}
答案 0 :(得分:2)
Promise总是同步返回。你想要的(我认为)是处理已解决的承诺。
因此,您需要使用.then
(这是承诺上可用的方法):
getServerCall()
.then(function(result){
if (result.success) {
console.log("success");
} else {
console.log("failed")
}
});