我很难理解Node.js setTimeout()
是如何工作的 - 或者更确切地说,为什么一个具体的例子没有。
Node.js MVC框架Sails.js有一个update(criteria, values)
函数,用criteria
更新模型的属性到values
,例如User.update({name: 'Frank'}, {age: 20})
会更新所有弗兰克命名用户的年龄。我试图在超时后使用here描述的语法执行更新查询:
setTimeout(User.update, 2000, {name: 'Frank'}, {age: 20})
这实际上似乎没有更新任何内容。但是,当我将函数包装在一个简单的包装器中时:
function testTimeout(criteria, values) {
return User.update(criteria, values)
.then(function(tasks) {
return;
});
}
然后使用包装器作为第一个参数调用超时:
setTimeout(testTimeout, 2000, {name: 'Frank'}, {age: 20})
用户已正确更新。我想了解为什么会发生这种情况,以及如何使用尽可能少的额外代码执行超时。