Angular JS在$ scope内执行函数$ timer接收TypeError

Dog*_*Dog 1 javascript timeout angularjs angularjs-scope

为什么$timeout在Angular JS中使用内部函数时,如下所示,工作正常.

var mytimeout = $timeout(function(){
    console.log("MyTimeout Executed");
},2000);
mytimeout.then(
    function() {
        console.log( "mytimeout resolved!", Date.now() );
    },
    function() {
        console.log( "mytimeout rejected!", Date.now() );
    }
);
Run Code Online (Sandbox Code Playgroud)

但是当我使用$timer里面的函数时,$scope它不起作用,像这样:

$scope.myFunction = function(){
   console.log("MyTimeout Executed");
}; 

var mytimeout = $timeout($scope.myFunction(),2000);
mytimeout.then(
    function() {
        console.log( "mytimeout resolved!", Date.now() );
    },
    function() {
        console.log( "mytimeout rejected!", Date.now() );
    }
);
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

TypeError: undefined is not a function
    at http://0.0.0.0:3000/assets/angular.js?body=1:14015:28
    at completeOutstandingRequest (http://0.0.0.0:3000/assets/angular.js?body=1:4301:10)
    at http://0.0.0.0:3000/assets/angular.js?body=1:4602:7 angular.js?body=1:9779
(anonymous function) angular.js?body=1:9779
(anonymous function) angular.js?body=1:7217
(anonymous function) angular.js?body=1:14018
completeOutstandingRequest angular.js?body=1:4301
(anonymous function) angular.js?body=1:4602
Run Code Online (Sandbox Code Playgroud)

Ste*_*hen 7

var mytimeout = $timeout($scope.myFunction(),2000);
Run Code Online (Sandbox Code Playgroud)

这是你的问题.()从中取出myFunction().你需要传递一个函数引用,而不是调用函数并获取结果(在这种情况下将是undefined),然后将传递给$ timeout.