私は、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
はちょうど '行います(生成)、次に' BuildImage()を呼び出しますか – Icycool