以下はすぐに実行され、完全に
var print = function(){
console.log('hey');
}
$timeout(print(), 2200);
タイムアウトを無視しますが、これは、私は機能が含まれている変数を使用することはできませんなぜ完全に罰金
$timeout(function(){console.log('hey')}, 2200);
に動作しますか?
以下はすぐに実行され、完全に
var print = function(){
console.log('hey');
}
$timeout(print(), 2200);
タイムアウトを無視しますが、これは、私は機能が含まれている変数を使用することはできませんなぜ完全に罰金
$timeout(function(){console.log('hey')}, 2200);
に動作しますか?
これは間違っています:
var print = function(){
console.log('hey');
}
$timeout(print(), 2200);
関数を渡すための正しい形式は次のとおりです。
var print = function(){
console.log('hey');
}
$timeout(function(){
print()
}, 2200);
$タイムアウトが最初の引数で関数を必要とするので。
あなたは$timeout
コンストラクタの最初の引数は、関数ではなく、関数の呼び出しであるAngular Doc
でこれを読むことができます。
$timeout(print, 2200);
に変更し、それを、それはあなたがここに$timeout
サービスについての詳細を読むことができます罰金:)
を動作するはずです:https://docs.angularjs.org/api/ng/service/ $タイムアウト
希望に役立ちます!
のみを使用しprint
ここ
var print = function(){
console.log('hey');
}
$timeout(print, 2200);
は、jQueryの機能を例に取り組んでいるsetTimeout()
var print = function(){
console.log('hey');
}
setTimeout(print, 2000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var print = function(){
console.log('hey');
}
$timeout(print, 2200);
$timeout(print, 2200);
それを修正する方法を示すいくつかの答えがすでに存在する機能
からparanthesisを削除しますが、あなたの質問に答えるために:私は機能が含まれている変数を使用することはできませんなぜ
を?
それはあなたができることですが、それはあなたがやっていることではありません。あなたはこのような関数を作成する場合:
var print = function(){
console.log('hey');
}
をあなたは機能を指すprint
という名前の変数で終わります。あなたは今の関数としてそれを
をだ取得結果。あなたの関数は、これに相当します:あなたはタイムアウトを使用しているとき
var print = function(){
console.log('hey');
return undefined;
}
は、だから、最初のパラメータとして機能を必要としています。 print()
関数を呼び出すと結果(undefined
)が得られるので、これはタイムアウト関数に必要なものではありません。
ので、復習に:
正しい
$timeout(print, 2200); // Pass the function as an argument
誤った
$timeout(print(), 2200); // Pass the value undefined as an argument
Upvoted、それは** **ソリューションを説明する唯一の答えです。 – Mistalis