对mapLimit返回中的变量的独占访问权

时间:2019-04-24 08:51:33

标签: node.js async.js

我对使用Node.js编程相当陌生,但对编程(C / C ++ / Python / Shaders)并不陌生,并且我有一个关于在例如async.mapLimit返回其回调

示例

var myGlobalCounter = 0;

function executeDownload(item, callback){

  exec('./ascriptthatdownload.sh ' + item, function (error, stdout, stderr) {
    // Here do I have exclusive access to myGlobalCounter
    // so that I could do this or update lets say a UI component?
    myGlobalCounter++
    console.log('Downloads ready:', myGlobalCounter);
  });   
}

function downloadSomeFiles() {
  var listOfFiles = [];
  // create download links
  async.mapLimit(listOfFiles, 4, executeDownload, function(err, results){

  });
}

我可以使用它,但是我不知道这是否足够安全?其他建议也表示赞赏。在C / C ++中,我将使用互斥锁来防止同时访问myGlobalCounter。

编辑:我希望每次下载完成后都能安全地将myGlobalCounter计数为1,然后将其传递到console.log或其他组件中

1 个答案:

答案 0 :(得分:0)

在他的评论中(@我不能接受作为回答)我对@CertainPerformance解释表示敬意

  

是的,JavaScript是单线程的-同步代码块将   在其他回调无法运行之前运行到最后,请查找事件   环。您几乎不必担心JS中的共享可变状态