我是棱角分明的新手,我正在创建一个简单的搜索应用。在我的搜索应用程序中,我正在使用工厂,我有两个功能(搜索和人口统计调用两个不同的webapi来检索数据如下。
MYSearchApp.factory('dataProvider', function($http, $q,$timeout) {
return {
search: function (filter) {
var dataUrl = '/api/xyz/search';
var deferred = $q.defer();
$http.post(dataUrl, filter)
.success(function (data) {
deferred.resolve(data);
})
.error(function (err,status) {
if (status == -1) {
err = "Server not responding";
}
deferred.reject(err);
});
return deferred.promise;
},
Demographics: function (filter) {
var dataUrl = '/api/xyz/Demographics';
var deferred = $q.defer();
$http.post(dataUrl, filter)
.success(function (data) {
deferred.resolve(data);
})
.error(function (err,status) {
if (status == -1) {
err = "Server not responding";
}
deferred.reject(err);
});
return deferred.promise;
}
}
});
我在我的代码中调用函数如下:
MYSearchApp.controller('SearchController',
function SearchController($scope, $route, $routeParams, dataProvider, consts, $timeout) {
.................
..............
$scope.search = function (searchForm) {
dataProvider.Demographics(filter).then(function(data) {
if (data && data.length > 0) {
$scope.Email = data[0].Email;
}
}
)
dataProvider.search(filter).then(function (data) {
if (data && data.length > 0) {
$scope.Details = data;
})
}
}
截至目前这两个函数同时运行,但是我想知道我如何顺序运行这个函数,即我想先执行人口统计信息,然后在收到结果后我想执行搜索方法。
如果有人可以分享一些如何实现这一目标的例子,那就太棒了。 在此先感谢您的帮助。