我向我的服务器js发布了一个id,它会执行一些可能需要大约一分钟或更长时间的事情。我认为连接等待响应和POST再次超时。我希望客户端或浏览器等到执行完全完成后返回响应,这是长时间执行的结果。
我在网上看过,我看到了一些关于承诺的问题。我用了诺言,但仍然发布了。还有其他解决方案吗?
代码:
$scope.imageget = function(target) {
$http.post('/' + 'region/images', {under: id})
.then(function(docs) {
$scope.results = docs.data.results;
var responss = docs.data.results;
var jsonresponse = JSON.parse(responss);
jobdetails = jsonresponse;
console.log(jobdetails)
});
};
承诺后的守则:
$scope.imageget = function(target) {
var deferred= $q.defer();
$timeout(function(){
$http.post('/' + 'region/images', {under: id})
.then(function(docs) {
$scope.results = docs.data.results;
var responss = docs.data.results;
var jsonresponse = JSON.parse(responss);
jobdetails = jsonresponse;
console.log(jobdetails)
});
deferred.resolve();
}, 3000);
return deferred.promise;
};
答案 0 :(得分:0)
尝试在$ http配置参数中设置超时(此处我将其设置为三分钟)。
$scope.imageget = function(target) {
$http.post('/' + 'region/images',
{under: id},
{timeout: 180000})
.then(function(docs) {
$scope.results = docs.data.results;
var responss = docs.data.results;
var jsonresponse = JSON.parse(responss);
jobdetails = jsonresponse;
console.log(jobdetails)
});
};
有关$ http config的更多信息,请参阅the docs。关于配置使用的This section特别有趣。
答案 1 :(得分:0)
您的代码中存在多个错误
请求等待60秒应该不是问题。所以我想看看你的浏览器(最好是Chrome ;-))网络日志并检查它是否真的超时,或者是否从服务器获得某种错误代码。