我在服务器端有两个方法,如下所示:
var Future = require("fibers/future");
Meteor.methods({
foo: function () {
this.unblock();
var f = new Future();
setTimeout(function () {
f.return(42);
}, 10000);
return f.wait();
},
bar: function () {
return 43;
}
});
Run Code Online (Sandbox Code Playgroud)
从客户端(使用浏览器控制台)调用这些方法时,它们工作正常(foo等待10秒,然后bar立即工作):
Meteor.call("foo", function (err, data) {
console.log(err || data);
// After 10 seconds: 42
});
Meteor.call("bar", function (err, data) {
console.log(err || data);
// Very quick (*instantly*): 43
});
Run Code Online (Sandbox Code Playgroud)
但是,当有一个会话并且我们调用时Meteor.logout(fn),callback(fn)将在foo完成之后等待.
我不希望这样.我希望这个logout方法能够像bar(不等待完成foo,但立即工作)一样工作. …
具有以下for循环:
for (var i = 0; i < 3; ++i) {
console.log(i, p);
var p;
p = 42;
}
Run Code Online (Sandbox Code Playgroud)
我期待输出为:
0 undefined
0 undefined
0 undefined
Run Code Online (Sandbox Code Playgroud)
但实际上,输出是:
0 undefined
0 42
0 42
Run Code Online (Sandbox Code Playgroud)
由于我们正在使用var p(重新声明p)下一行,为什么行中没有p未定义(总是)console.log?