0
用于使用ROBOCOPY复制操作的作业队列Async.js队列工人用下面的代码建立:没有完成
interface copyProcessReturn {
jobId: number,
code: number,
description: string,
params: string[],
source: string,
target: string,
jobsLeft: number
}
export default class CopyHandler {
private aQueue: AsyncQueue<copyProcess>;
constructor() {
let that = this;
this.aQueue = async.queue(function (cp: copyProcess) {
that.performCopy(cp);
that.copy_complete();
}, 1);
}
private copy_complete() {
// NOP
}
public addCopyProcess(cp: copyProcess): void {
this.aQueue.push(cp);
}
的目的是在一个时间,以使一个复制处理的执行,同时保持在向队列添加额外的复制过程方面的并发性。
这适用于第一份工作,其他工作正确排队。但是,即使在作业完成后正确调用copy_complete()回调,其工作人员也不会被释放,并且队列中的其他作业仍未处理。
我会非常感谢提示。
async.queue中的函数有2个参数,其次是您需要在调用that.copy_complete()之后调用的回调。让异步库知道它已完成,并且可以在队列中运行下一个fn – Molda
谢谢,async.worker现在按预期完成。如果您将评论发布为答案,我会将其标记为正确。 –
酷,我会做我在手机上,所以它更容易发表评论。谢谢 – Molda