如何在 scala js 中实现线程安全的计数器或增量

How to implement a thread safe counter or increment in scala js

JavaScript by itself is single-threaded.

这是否意味着我们可以简单地在 js 项目中编写 var 计数器,并相信它可以正常工作?

//believe it's thread safe?
object ScalaObject{
   private var counter = 0L
   def get:Long = {
     counter = counter + 1
     counter
   }
}

我不是来自 javascript 世界。我想确定一下。

添加@volatilesynchronized 不会导致编译器出错。而且似乎不影响编译后的js代码。

Does this mean that we could simply write var counter in js project, and trust it to work properly?

是的。

阅读 Scala.js 中的 the implementation of AtomicLong 也很有趣。你会看到它只是一个简单的愚蠢var,有很多仪式要遵守界面。