如何将 TypeScript 变量声明为 volatile?

Tre*_*haw 0 volatile typescript bbc-microbit

我正在与BBC Micro Bit 合作,并正在为 TypeScript 中的 Make Code 创建扩展。

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

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;
    }
})
Run Code Online (Sandbox Code Playgroud)

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

Tit*_*mir 5

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

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

即使是WebWorkers允许运行多个 JS 线程的东西也不会破坏这个假设。相反,它们依赖于两个线程之间的消息传递,而不允许共享变量。