Por que envolveria uma função no serviço de tempo limite AngularJS $ sem demora, como acontece no código de uso de exemplo de upload de arquivo ng?

Na maioria das violações que contêm código de uso de amostra para ng-file-upload (https://github.com/danialfarid/ng-file-upload) como o de (http://jsfiddle.net/danialfarid/maqbzv15/1118/), as funções de retorno de chamada de resposta de upload envolvem seu código em um$timeout chamada de serviço, mas essas chamadas não têm nenhum parâmetro de atraso passado.

Os documentos Angular.js para$timeout (https://docs.angularjs.org/api/ng/service/$ timeout) indicam que o atraso é opcional, mas por que você deseja fazer uma chamada para$timeout se não atrasar o código que está sendo executado. Em outras palavras, em vez do seguinte, por que não fazer o seguinte:

//inject angular file upload directives and services.
var app = angular.module('fileUpload', ['ngFileUpload']);

app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) {
$scope.uploadPic = function(file) {
file.upload = Upload.upload({
  url: 'https://angular-file-upload-cors-srv.appspot.com/upload',
  data: {username: $scope.username, file: file},
});

file.upload.then(function (response) {
  $timeout(function () {
    file.result = response.data;
  });
}, function (response) {
  if (response.status > 0)
    $scope.errorMsg = response.status + ': ' + response.data;
}, function (evt) {
  // Math.min is to fix IE which reports 200% sometimes
  file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
});
}
}]);

Existe alguma razão para o$timeout invólucro em todos esses exemplos? A chamada file.upload a seguir funcionaria em seu lugar ?:

file.upload.then(function (response) {
  file.result = response.data;
}, function (response) {
  if (response.status > 0)
    $scope.errorMsg = response.status + ': ' + response.data;
}, function (evt) {
  // Math.min is to fix IE which reports 200% sometimes
  file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
});

Edit: Eu posso ver que parece funcionar sem o$timeout wrapper, mas o fato de estar incluído em todos os exemplos me faz pensar que é deliberado, o que provavelmente significa que há um caso de borda de segurança / robustez / compatibilidade de navegador que não entendo aqui.

questionAnswers(2)

yourAnswerToTheQuestion