我对使用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或其他组件中
答案 0 :(得分:0)
在他的评论中(@我不能接受作为回答)我对@CertainPerformance解释表示敬意
是的,JavaScript是单线程的-同步代码块将 在其他回调无法运行之前运行到最后,请查找事件 环。您几乎不必担心JS中的共享可变状态