当我在浏览器窗口中运行的javascript中存在资源(例如全局变量foo
),然后我通过window.opener.foo
从子窗口访问该变量时,如何同步访问它,以便在同时使用变量时父窗口和子窗口不会遇到竞争条件?
我们在编写多线程代码时经常遇到这个问题,但在支持多线程的语言中,我们通常有同步机制来确保安全访问共享资源。但是,javascript中不存在这样的同步机制,因为它是单线程环境。
但是,在多个窗口通过window.opener
访问共享变量的情况下,我们有两个单独的javascript运行时环境,不能保证在单个线程上运行。那么我们如何确保安全访问共享变量?我无法通过谷歌搜索找到相关信息,但也许我没有使用正确的搜索条件。