【发布时间】:2014-06-26 20:01:17
【问题描述】:
在我的应用中,我想拥有多个后台作业。在免费计划中,我得到了一项并发的后台工作。如果工作时间发生冲突会发生什么?作业会排队还是丢弃?
【问题讨论】:
标签: parse-platform task
在我的应用中,我想拥有多个后台作业。在免费计划中,我得到了一项并发的后台工作。如果工作时间发生冲突会发生什么?作业会排队还是丢弃?
【问题讨论】:
标签: parse-platform task
工作被删除。这个 Parse App 被允许执行 2 个计划的作业,这就是当四个计划在同一分钟内运行时发生的情况:
【讨论】:
你可以写一个队列,下面是一个例子:
Tasks 是一个具有队列能够运行的功能的对象。
然后,您在表中创建具有两个属性的 Jobs,method:String params:Object
例如方法:'fetchVenue':参数:{'id':'1234'}
然后将 parse 设置为每分钟运行一次队列函数
tasks = {}
tasks.fetchVenue = function(params) {
var promise = new Parse.Promise();
//some async tasks
promise.resolve("fetchVenue called with params:"+params);
return promise
}
tasks.fetchUser = function(params) {
var promise = new Parse.Promise();
//some async tasks
promise.resolve("fetchUser called with params:"+params);
return promise
}
Parse.Cloud.job("queue", function(request, status) {
var jobCount = 0
var query = new Parse.Query('Job');
query.notEqualTo("complete", true);
query.each(function(job) {
if (tasks.hasOwnProperty(job.get('method'))) {
tasks[job.get('method')]().then(function(completion){
jobComplete(job)
jobCount++
status.message(completion);
})
} else {
status.message("job not found "+job.get('method'));
}
}).then(function(){
status.success(jobCount+" jobs processed");
}, function(error) {
status.error("Uh oh, something went wrong.");
})
});
var jobComplete = function(job){
job.set('complete',true)
job.save()
}
【讨论】: