Node.js setTimeout()适用于包装函数,但没有使用相同的函数解包

时间:2016-05-17 11:44:02

标签: javascript node.js timeout sails.js

我很难理解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})

用户已正确更新。我想了解为什么会发生这种情况,以及如何使用尽可能少的额外代码执行超时。

0 个答案:

没有答案