Javascript 使用带承诺的Restanglar(延迟)
在我的应用程序中,我使用restanglar,我有这样的方法(我从普通的$http请求转换而来)。 我不知道如何正确地使用restanglar和promissions。怎么可能呢 这是我的密码:Javascript 使用带承诺的Restanglar(延迟),javascript,angularjs,angular-promise,restangular,deferred,Javascript,Angularjs,Angular Promise,Restangular,Deferred,在我的应用程序中,我使用restanglar,我有这样的方法(我从普通的$http请求转换而来)。 我不知道如何正确地使用restanglar和promissions。怎么可能呢 这是我的密码: var test = function(){ var data = '{"Office":"' + office + '"}'; var deferred = $q.defer(); var person = Restangular.one('persons', id) $scope.person.pa
var test = function(){
var data = '{"Office":"' + office + '"}';
var deferred = $q.defer();
var person = Restangular.one('persons', id)
$scope.person.patch(data).then(function (response) {
deferred.resolve(response);
},function (err, status) {
deferred.reject(status);
});
return deferred.promise;
}
var runIt = function(){
test.then(...)...
}
您可以简单地使用
patch
方法返回的承诺,而不是创建新的自定义承诺
代码
var test = function() {
var data = '{"Office":"' + office + '"}';
var person = Restangular.one('persons', id);
//returned promise
return person.patch(data).then(function(response) {
return response.data;
}, function(err, status) {
return response.status;
});
}
test().then(...)
但我得到angular.js:11706 TypeError:cannotreadproperty'then'的未定义检查我的更新code@brabertaser1992查看更新后的,基本上应该将
$scope.person
重命名为person
,因为person不存在于$scope中,它是javascript变量。我确实更新了我的答案,并在你的代码中显示出来。@brabertaser1992很高兴能帮助你。谢谢:-)还有一个问题:功能(错误,状态){return response.status;-我应该在这里传递什么,而不是response>@brabertaser1992,因为我可以看到您的旧代码传递了错误,所以我使用了response.error
,如果您想传递结果
,那么整个响应对象将传递给调用方函数,如数据
,标题
&