我不明白不同的行为:
first.js
Template.example.onRendered(function() {
timerId = setTimeout ( function() { console.log(Random.id()) }, 3000 );
});
所以这会在3秒钟后在控制台上给我一个随机ID - 这正是应该做的。
second.js
function anything() {
console.log(Random.id());
}
Template.example.onRendered(function() {
timerId = setTimeout ( anything(), 3000 );
});
这给了我即时的id,所以3秒后就不会有任何动作了。这不是我想要的,但我需要使用一个命名函数,所以第一次尝试对我来说还不够。
答案 0 :(得分:1)
您正在调用您的函数,而不是将其传递给setTimeout
。
这样做:
timerId = setTimeout(function() { anything(); }, 3000); // anonymous function calling the named function
或者
timerId = setTimeout(anything, 3000); // passing the named function without calling
或者
timerId = setTimeout(anything.bind(null), 3000); // new function with "this" pointing to null
您最初所做的相当于:
timerId = setTimeout(undefined, 3000); // function without return statement will "return" undefined