检测正在运行的javascript工作程序

Detect running javascript workers

本文关键字:javascript 工作程序 运行 检测      更新时间:2023-09-26

我正在编写一个javascript HTML5 phonegap应用程序。我正在使用SQLite来存储数据。为了提高性能,我异步插入数据库,也就是说,我不需要在上一个数据库操作的回调中调用下一个操作。在内部,我相信javascript为每个操作创建了一个worker,因此可以说是多线程的。

现在的问题是,我如何知道所有工人都完成了任务?例如,为了告诉用户所有数据都已保存?

如果我正确理解您的请求,那么您正在排队等待异步运行的DB插入,并且您希望稍后能够进行检查,以查看是否所有请求都已完成。我会这样做:

function asyncTask() {
        //
        // Do real work here
        //
        runningTasks--
}

//in your init section, setup a global variable to track number of tasks    
runningTasks = 0
//when you need to create a new task, increment the counter
runningTasks++;
setTimeout (asyncTask,1);

if (runningTasks > 0) {
    //something still running
} else {
    //all tasks are done.
}

在另一种语言中,当测试和设置runningTasks可变时,你需要担心竞争条件,但AFAIK,Javascript只作为单线程实现,所以你不需要担心这一点。