Принудительно отклонить/разрешить обещание

Я пытаюсь проверить загрузку файла, прочитав содержимое файла манифеста в zip-файле. Я использую JSZip для чтения файла и хотел бы остановить процесс загрузки файла при определенных условиях. Каков правильный способ принудительного разрешения/отклонения с помощью if/else?

  function validateUpload(file, errFiles) {
    var validateFile = JSZip.loadAsync(file)
    .then(function(zip) {
      var manifest = zip.files['manifest.json'];
      return manifest.async("text") // added return here
      .then(function(contents) {
        var manifestObj = angular.fromJson(contents);
        if((manifestObj.module === 'analytics') && ($state.current.name.indexOf('packages') !== -1)) {
          return $q.reject('Invalid software upload');
        }
        if(!manifestObj.module && ($state.current.name.indexOf('analytics') !== -1)) {
          return $q.reject('Invalid analytics upload');
        }
        return $q.resolve(file);
      });
    });
    validateFile.then(function(data) {
      console.log('success: ' + data);
      uploadFile(file);
    }, function(error) {
      console.log('error: '+ error);
    });

Изменить

Мне не хватало оператора возврата перед вызовом manifest.async, теперь он, кажется, правильно вызывает успех/ошибку обещания validateFile.


person neridaj    schedule 07.07.2017    source источник


Ответы (1)


Добавление оператора return перед вызовом manifest.async устранило проблему.

person neridaj    schedule 07.07.2017