Javascript 为什么我的承诺中的功能没有运行
我听说$q和promise非常适合同步编程 我希望第二个函数在第一个函数超时后运行。所以基本上,我希望mt-first函数在第二个函数运行之前先完成运行 我的代码是:Javascript 为什么我的承诺中的功能没有运行,javascript,angularjs,Javascript,Angularjs,我听说$q和promise非常适合同步编程 我希望第二个函数在第一个函数超时后运行。所以基本上,我希望mt-first函数在第二个函数运行之前先完成运行 我的代码是: 点击我! angular.module('myApp',[]) .controller('myCtrl',['$scope','$timeout','$q',函数($scope,$timeout,$q){ $scope.functionOne=函数(){ 返回$q(函数(解析、拒绝){ $timeout(函数(){ 警惕(“
点击我!
angular.module('myApp',[])
.controller('myCtrl',['$scope','$timeout','$q',函数($scope,$timeout,$q){
$scope.functionOne=函数(){
返回$q(函数(解析、拒绝){
$timeout(函数(){
警惕(“院长”);
}, 3000);
})
};
$scope.functionTwo=函数(){
警报(“无敌舰队”);
}
$scope.myClick=function(){
var promise=$scope.functionOne();
promise.then(函数(){
$scope.functionTwo();
},函数(){
警报(“失败”);
})
};
}]);
普朗克:承诺是创造出来的,但从未解决过。但是已返回一个承诺:
$scope.functionOne = function(){
return $timeout(function(){
alert("dean");
}, 3000);
};
承诺是创造出来的,但从未实现。但是已返回一个承诺:
$scope.functionOne = function(){
return $timeout(function(){
alert("dean");
}, 3000);
};
在我看来,做你想做的事情的更好方法是:
在我看来,做你想做的事情的更好方法是:
因为您没有调用
resolve
或reject
?是的,给出了正确的答案因为您没有调用resolve
或reject
?是的,给出了正确的答案Bergi的答案有什么不同?这取决于具体情况$timeout(function(){},1000)代码>并仅保留defer.resolve({data::})代码>和工作良好。它与Bergi的答案有什么不同?这取决于functionOne
使用$timeout承诺来解决承诺。在我的回答中,您可以删除$timeout(function(){},1000)代码>并仅保留defer.resolve({data::})代码>和工作良好。
$scope.functionOne = function(){
var defer = $q.defer();
$timeout(function(){
defer.resolve({data:""}); // or defer.reject(data)
}, 1000);
return defer.promise;
};