Angularjs 然后声明不在角度承诺中运行
在我的应用程序中,用户单击一个按钮,该按钮将触发Angularjs 然后声明不在角度承诺中运行,angularjs,Angularjs,在我的应用程序中,用户单击一个按钮,该按钮将触发runsOnClick。在runsOnClick中,我尝试使用一个承诺来调用someFunc(这种情况按预期发生),一旦someFunc完成运行,我希望runsOnClick中的这段代码(承诺的部分)运行,但它永远不会运行 then(function() { console.log("in runsOnClick");//this never runs, why? }); 我如何构造一个承诺,使runs中的所
runsOnClick
。在runsOnClick
中,我尝试使用一个承诺来调用someFunc
(这种情况按预期发生),一旦someFunc
完成运行,我希望runsOnClick
中的这段代码(承诺的部分)运行,但它永远不会运行
then(function() {
console.log("in runsOnClick");//this never runs, why?
});
我如何构造一个承诺,使runs中的所有代码单击运行
$scope.someFunc = function(){
console.log("in someFunc");
$http.get('http://localhost:8090/endpoint').success(function(data){
console.log(data, "this logs");
});
},
$scope.runsOnClick = function(){
$scope.someFunc().then(function() {
console.log("in runsOnClick");//this never runs, why?
});
},
您缺少返回语句:
$scope.someFunc = function(){
console.log("in someFunc");
// v----------------------------- here
return $http.get('http://localhost:8090/endpoint').success(function(data){
console.log(data, "this logs");
});
},
您尝试调用.then()
可能失败,因为$scope.someFunc()
的返回值是未定义的您需要返回
一些内容,以便下一个运行:
return $http.get('http://localhost:8090/endpoint').success(function(data){
console.log(data, "this logs");
});
$q
不应该因类型错误而失败,它只会将未定义的传递给以下然后回调。@davintroon未定义。然后(…)
将因类型错误而失败,因为未定义的没有然后方法。错误不会来自$q.Ah,尽管您指的是next
将undefined
作为回调参数。有道理。