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

检测正在运行的javascript工作进程,javascript,multithreading,cordova,Javascript,Multithreading,Cordova,我正在编写一个javascript HTML5 phonegap应用程序。 我正在使用SQLite存储数据。 为了提高性能,我正在异步执行数据库插入,也就是说,我不需要在回调前一个数据库操作时调用下一个操作。 在内部,我相信javascript为每个操作创建了一个工作线程,因此可以说是多线程 现在的问题是,我如何知道所有工人都完成了任务?e、 为了告诉用户所有数据都已保存 如果我正确理解了您的请求,那么您正在排队等待DB INSERT异步运行,并且您希望能够在以后检查是否所有请求都已完成。我会这

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


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

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

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变量时,您需要担心竞态条件,但实际上,Javascript只是作为单线程实现的,所以您不必担心这一点。

它应该在完成事件时具有回调函数感谢Jani的响应……实际上,从我的描述来看,我之所以避免这样做,是因为这会迫使我进行某种串行操作,在这种操作中,一件事情必须一件接一件地发生。嗯,我正在考虑的一种方法是计算我开始的作业数量,并在完成时减少……但如果我们有一种方法知道所有工人仍在运行,在任何情况下都会更好。。