deferred.resolve giving error TypeError: undefined is not a function
deferred.resolve giving error TypeError: undefined is not a function
我正在使用 angularjs 和 cordova 工具来创建应用程序。
我创建了服务,其中包含调用 API 的代码。并且我想 return 回应我的 angular 控制器。
我的代码是,
服务,
JodoModule.factory('commonServices', function ($http, $q, $rootScope) {
return {
getServiceData: function (url) {
$rootScope.loading = true;
var deferred = $q.defer();
var req = {
method: 'GET',
url: url
}
$http(req).success(function (data) {
alert("data in service = " + JSON.stringify(data.Data));
deferred.resolve(data);
}).error(function (data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
}
};
});
我的控制器是,
commonServices.getServiceData("My url").
success(function (data, status, headers, config) {
alert(data);
}).
error(function (data, status, headers, config) {
alert("Got error");
});
在上面的代码中,在服务中,它显示了 JSON.stringify(data.Data)) 的提示消息;在成功块中,所以数据正在到来,但它没有执行 deferred.resolve(data);正确...
在 Web 工具栏中出现错误,
ie. TypeError: undefined is not a function
我的 o/p 是:
{"status":"SUCCESS","Message":"success","Token":"","Data":[{"Id":17,"UserId":"477f1919-6b80-4804-a325-ac0cb05bcd3e","UserName":"honey","FirstName":"honey","LastName":null,"ProfilePic":false,"Status":2}]}
我该如何解决这个错误。 ?
普通的 $q promises 没有 .success()
或 .error()
方法,但无论如何您都不应该使用 deferred antipattern。相反,这样做:
JodoModule.factory('commonServices', function ($http, $rootScope) {
return {
getServiceData: function (url) {
$rootScope.loading = true;
var req = {
method: 'GET',
url: url
};
return $http(req).then(function (result) {
alert("data in service = " + JSON.stringify(result.data.Data));
return result.data;
});
}
};
});
控制器:
commonServices.getServiceData("My url").
then(function (data) {
alert(data);
}).
catch(function (result) {
alert("Got error");
});
干净多了,嗯?
我正在使用 angularjs 和 cordova 工具来创建应用程序。
我创建了服务,其中包含调用 API 的代码。并且我想 return 回应我的 angular 控制器。
我的代码是, 服务,
JodoModule.factory('commonServices', function ($http, $q, $rootScope) {
return {
getServiceData: function (url) {
$rootScope.loading = true;
var deferred = $q.defer();
var req = {
method: 'GET',
url: url
}
$http(req).success(function (data) {
alert("data in service = " + JSON.stringify(data.Data));
deferred.resolve(data);
}).error(function (data, status, headers, config) {
deferred.reject(status);
});
return deferred.promise;
}
};
});
我的控制器是,
commonServices.getServiceData("My url").
success(function (data, status, headers, config) {
alert(data);
}).
error(function (data, status, headers, config) {
alert("Got error");
});
在上面的代码中,在服务中,它显示了 JSON.stringify(data.Data)) 的提示消息;在成功块中,所以数据正在到来,但它没有执行 deferred.resolve(data);正确...
在 Web 工具栏中出现错误,
ie. TypeError: undefined is not a function
我的 o/p 是:
{"status":"SUCCESS","Message":"success","Token":"","Data":[{"Id":17,"UserId":"477f1919-6b80-4804-a325-ac0cb05bcd3e","UserName":"honey","FirstName":"honey","LastName":null,"ProfilePic":false,"Status":2}]}
我该如何解决这个错误。 ?
普通的 $q promises 没有 .success()
或 .error()
方法,但无论如何您都不应该使用 deferred antipattern。相反,这样做:
JodoModule.factory('commonServices', function ($http, $rootScope) {
return {
getServiceData: function (url) {
$rootScope.loading = true;
var req = {
method: 'GET',
url: url
};
return $http(req).then(function (result) {
alert("data in service = " + JSON.stringify(result.data.Data));
return result.data;
});
}
};
});
控制器:
commonServices.getServiceData("My url").
then(function (data) {
alert(data);
}).
catch(function (result) {
alert("Got error");
});
干净多了,嗯?