2017-08-22 6 views
0

私は、2つの関数からなる単純な約束を持っています。私はこのチェーンを自分のHTMLで呼んでいます。ノード内の約束を使う

チェーン内の関数を私の関数の1つとして数回使用することもできます。ここ

は、私のチェーン

$scope.BuildImage = function() { 
     return new Promise(function() { 
       saveCanvas = JSON.stringify(canvas); 
       localStorage.setItem('CC-canvas', saveCanvas); 
       localStorage.setItem('format', sessionStorage.getItem('format')); 
       localStorage.setItem('backgroundColor', sessionStorage.getItem('backgroundColor')); 
       localStorage.setItem('backgroundImage', sessionStorage.getItem('backgroundImage')); 
       localStorage.setItem('FirstImage', sessionStorage.getItem('FirstImage')); 
       localStorage.setItem('SecondImage', sessionStorage.getItem('SecondImage')); 
       localStorage.setItem('ThirdImage', sessionStorage.getItem('ThirdImage')); 

       if(localStorage.getItem('CC-canvas')){ 
        $scope.myCreation =''; 
       } 


     }); 
    }; 
    $scope.generate = function() { 
     return new Promise(function() { 
      $scope.generating = true; 
      $scope.generateBtn = 'Generating'; 
      for(i = 0; i < $scope.gallery.length; i++){ 
       $scope.select[i] = ''; 
      } 
      $scope.gallery = []; 
      $scope.checkPhoto = []; 

      $scope.uploadImage($scope.creative).then(function(result){ 
       $scope.generateCanvas(result, $scope.left, $scope.tops, $scope.wi, $scope.hi, $scope.per, $scope.btmR, $scope.btmL, $scope.backUrl) 
        .then(function(successUrl){ 
         $timeout(function(){ 
          $scope.photosToPhp.push(canvas2.toDataURL());},800); 
         console.log($scope.count); 
         console.log($scope.photos[$scope.format].length); 
         console.log($scope.backUrl); 
         console.log($scope.photos[$scope.format][$scope.count]['backUrl']); 
         if($scope.count < ($scope.photos[$scope.format].length - 1)){ 
          $scope.generate(); 
          $scope.count ++; 
          $scope.left = $scope.photos[$scope.format][$scope.count]['left']; 
          $scope.tops = $scope.photos[$scope.format][$scope.count]['tops']; 
          $scope.wi = $scope.photos[$scope.format][$scope.count]['wi']; 
          $scope.hi = $scope.photos[$scope.format][$scope.count]['hi']; 
          $scope.per = $scope.photos[$scope.format][$scope.count]['per']; 
          $scope.btmR = $scope.photos[$scope.format][$scope.count]['btmR']; 
          $scope.btmL = $scope.photos[$scope.format][$scope.count]['btmL']; 
          $scope.backUrl = "/mm3/public/img/formats/" + $scope.format + "/" + $scope.photos[$scope.format][$scope.count]['backUrl']; 

          $scope.$apply(); 
          $scope.canvasHide = true; 

         }else{ 
          //all photos've been pushed now sending it to back end 
          $timeout(function(){ 
           $http.post('/mm3/savePhotos', $scope.photosToPhp).then(function(success){ 
            $scope.generating = false; 
            $scope.generateBtn = 'Generate'; 
            //creating mock up gallery 
            for(var x = 0; x < success.data.photos; x++){ 
             var file ='/mm3/tmp/'+ success.data.folder + "/out" + x + ".png"; 
             $scope.gallery.push(file); 
            } 
            $scope.photosToPhp = []; 
           },function(error){ 
           }); 

          },800); 
          $scope.count = 0; 
          $scope.left = $scope.photos[$scope.format][$scope.count]['left']; 
          $scope.tops = $scope.photos[$scope.format][$scope.count]['tops']; 
          $scope.wi = $scope.photos[$scope.format][$scope.count]['wi']; 
          $scope.hi = $scope.photos[$scope.format][$scope.count]['hi']; 
          $scope.per = $scope.photos[$scope.format][$scope.count]['per']; 
          $scope.btmR = $scope.photos[$scope.format][$scope.count]['btmR']; 
          $scope.btmL = $scope.photos[$scope.format][$scope.count]['btmL']; 
          $scope.backUrl = "/mm3/public/img/formats/" + $scope.format + "/" + $scope.photos[$scope.format][$scope.count]['backUrl']; 
          $scope.$apply(); 
         } 
        }) 
        .catch(function(errorUrl){ 
         console.log(errorUrl); 
        }) 

      }); 
      }); 
    }; 
    Promise.all([BuildImage()]).then(generate); 

であり、ここで私は$scope.BuildImage$scope.generate両方のあなたの約束のコールバックが/で拒否決意を呼び出すことはありません

<div class="btn btn-primary" ng-model="creative" uib-btn-radio="'local'" ng-click="MyChain()">GENERATE 
+0

はちょうど '行います(生成)、次に' BuildImage()を呼び出しますか – Icycool

答えて

0

からチェーンを呼び出したいHTMLです約束を確定するために.thenを呼び出すことができました。

成功の場合はresolve、エラーの場合はrejectのいずれかを使用して約束する必要があります。 Read more

BuildImages hould内部の約束があること:?。

new Promise(function(resolve, reject) { 
    saveCanvas = JSON.stringify(canvas); 

    // rest of your code ..... 

    resolve(); 
}); 
+0

リンクありがとうございました – Beep

関連する問題