我正在使用$window.location(url)直接从rest api下载csv文件。

我需要显示成功消息,即使我使用的是Promise,也正在下载文件,但我无法显示成功消息。

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);
}

最佳答案

您可以使用返回承诺的$ 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。

关于javascript - Angular Js中的$ window.location成功消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36265014/

10-12 07:24