是否可以将this.unblock()与percolate一起使用:synced-cron?我希望PJ2_1,PJ2_2,PJ2_3能够快速打印出来而不是等待Meteor.call()在10秒内完成,但事实并非如此。
工作示例:
SyncedCron.add({
name: 'pj2',
schedule: function(parser) {
return parser.text('every 30 seconds');
},
job: function() {
console.log("PJ2_1:");
Meteor.call('fa2', function(err, res) {
if (err) {
console.log("FA2: ERROR");
}
});
console.log("PJ2_2:");
Meteor.call('fa2', function(err, res) {
if (err) {
console.log("FA2: ERROR");
}
});
console.log("PJ2_3:");
}
});
示例Meteor.methods():
if (Meteor.isServer) {
Meteor.methods({
'fa2': function() {
this.unblock();
const data = HTTP.get('http://www.fakeresponse.com/api/?data={%22Hello%22:%22World%22}&meta=false&sleep=10');
return data;
}
})
}
答案 0 :(得分:1)
this.unblock
没有按预期的方式工作。根据消息来源,服务器上的unblock
是无操作的。这是有道理的,因为在服务器上没有连接(你没有进行基于DDP的调用),所以没有什么可以解锁本身。
不是调用方法,而是直接使用指定的回调调用HTTP.get
,然后您将观察到您想要的行为。
或者,定义一个由方法代码共享并在SyncedCron
作业中调用的函数。