从asyncfunction增量是安全的在Node.js?


var i=0
async function a(){
i++     
}
a();

以上代码可以安全运行吗?即使Javascript是单线程的,特别是在读+修改+写操作期间,另一个工作线程也可以在异步函数中操作相同的操作。

当调用async函数时,它将同步运行,直到在函数内部发生await。看到https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

描述因此,如果i++发生在函数中的任何await语句之前,则可以依赖于其同步发生。

正如你的问题所承认的,Javascript是单线程的(除非你使用web worker,但这些是彼此隔离的)。

如果你想确保两个不同的异步方法在修改共享变量时不会相互交错,可以使用某种信号量。

相关内容

  • 没有找到相关文章

最新更新