gpt4 book ai didi

javascript - Angularjs + 使用 $q 的两个 http 请求

转载 作者:行者123 更新时间:2023-12-03 06:38:35 24 4
gpt4 key购买 nike

我有两个 http 请求。1.邮寄方式2.获取方法。

我需要从两个http请求获取数据。

我添加了我的代码。但我认为这不是正确的做法。请推荐我。

问题1:

两次调用后同步。 Controller

(function() {
'use strict';
angular.module('myApp').controller('loginController', loginController);
loginController.$inject = ['$auth', '$http', '$location', '$scope', '$window', '$rootScope', 'commonService', '$q', '$localStorage'];
// inject an auth service here!
function loginController($auth, $http, $location, $scope, $window, $rootScope, commonService, $q, $localStorage) {
commonService.getHostDetails().then(function(data) {
commonService.login().then(function(data) {

}).catch(function(data) {
alert('Sorry ! test function faild');
});
}).catch(function(data) {
alert('Sorry ! login function faild');
});
};

})();

服务代码:

angular.module('myApp').factory('commonService', ['$q', '$timeout', '$http',
function($q, $timeout, $http, commonService) {

return ( {
login : login,
test : test,
});

function login() {
// create a new instance of deferred
var deferred = $q.defer();
$http.get('host.json')
// handle success
.success(function(data, status) {
deferred.resolve(data);
})
// handle error
.error(function(data) {
deferred.reject(data);

});
// return promise object
return deferred.promise;

}

function test(formData) {
// create a new instance of deferred
var deferred = $q.defer();
console.log("in service");
console.log(formData);
$http.post('/api/test', formData, {
headers : {
'Content-Type' : 'application/json'
}
})
// handle success
.success(function(data) {
deferred.resolve(data);
})
// handle error
.error(function(data) {
deferred.reject(data);

});

// return promise object
return deferred.promise;
}

}]);

问题-2。

另外请建议我两个http请求依赖于两个api。第一个http请求数据需要解析到第二个api中。

最佳答案

Promise 是链接调用的好方法。

$http.post("your api").then(function(response) {
//do something
return response.data;
}).then(function(data) {

return $http.get("you other api")
}).then(response_from_second_api) {

});

如果您有两个电话,那么在您可以做任何事情之前需要先解决,您可以做类似的事情

var promise1 = $http.get("");
var promise2 = $http.get("");

$q.all([promise1,promise2]).then(values) {
var value_of_promise1 = values[0];
var value_of_promose2 = values[1];
});

关于javascript - Angularjs + 使用 $q 的两个 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com