我如何将TypeScript变量声明为volatile?

问题描述 投票:0回答:1

我正在使用BBC Micro Bit,正在为TypeScript中的Make Code创建扩展名。

我有以下事件,该事件由我的机器人上的车轮编码器触发。在事件内部,我增加了几个变量。在Arduino语言中,我会将此类变量声明为“ volatile”,表明该变量可以被中断更改,从而确保我使用的是变量中的最新值。

control.onEvent(EventBusSource.MICROBIT_ID_IO_P0, EventBusValue.MICROBIT_PIN_EVT_RISE, function () {
    _lTicks += 1;
    _lerrTicks += 1;
    if (_lTicks % _partialTurn == 0) {
        _lTicks = 0;
        _lTurns += .0625;
    }
})

在声明变量时TypeScript是否具有等效的“ volatile”关键字吗?如果是这样,如何实施?

typescript volatile bbc-microbit
1个回答
2
投票

Javascript没有volatile,因为JavaScript运行时是单线程的。这意味着没有什么可以中断此代码,并且在代码运行时没有其他代码可以更改状态。

[通常,如果在执行一段代码期间发生事件,该事件将被放入队列,并且与该事件关联的代码仅在当前代码堆栈运行完毕后才执行。

甚至WebWorkers之类的东西都可以运行多个JS线程,这并没有打破这个假设。相反,它们依靠两个线程之间传递的消息,而不允许共享变量。

© www.soinside.com 2019 - 2024. All rights reserved.