我使用$window.location(url)
直接从rest api下载csv文件。
我需要显示成功消息,即使我使用了promises,文件也会被下载,但我无法显示成功消息。
function download() {
getcsv().then(function(response) {
if (response === 'success') {
$scope.msg = 'success';
}
})
}
getCSV() {
var defer = $q.defer;
downloadCSV();
return defer.promise;
}
function dowloadcsv() {
$window.location(url);
}
答案 0 :(得分:1)
您可以使用返回承诺的$ timeout服务:
app.factory('downloadService', function($q, $window, $timeout) {
return {
download: function(url) {
var defer = $q.defer();
$timeout(function () {
$window.location.href = url;
}, 1000)
.then(function () {
defer.resolve('success');
}, function () {
defer.reject('error');
});
return defer.promise;
}
}
}
如果以上代码无法替代,请尝试在downloadcsv函数中使用$ q.resolve。