簡體   English   中英

跨模塊共享計數器變量不符合預期

[英]Sharing counter variable across modules doesn't behave as intended

一個奇怪的...

一位同事有一個計數器(值),他們希望在其應用程序的文件/模塊之間共享該計數器(值)。 通常情況下,我會說只是繞過櫃台……但他們出於各種原因不想這樣做。

所以 - 相當直接的解決方案:創建一個模塊,將計數器作為作用域為該模塊的變量。 使用兩種方法導出 object:一種更新計數器,一種讀取計數器。

在需要的地方需要模塊 - 並使用方法與計數器交互。

但是,當傳入 1 時,setCounter 有時會添加兩位數。 我們對 getter 或 setter 沒有這個問題......我很困惑為什么 setCounter 會跳過? 我們也單獨運行它,但它仍然跳過了……這應該有效。 我不知道為什么不是。 我錯過了一些非常明顯的東西嗎?


let _counter = 1223

module.exports = {
  /*
  setCounter: (x) => {
    _counter = _counter + x // where x is 1 it adds 2!!! why??
  },
  getCounter: () => {
    return _counter;
  }
  */

  get getCounter(){
    return _counter
  },

  set setCounter(value){
    _counter = _counter + value // does not skip _counter++ 
  }

}

編輯

我不知道為什么 - 但它現在開始按預期工作了?


let _counter = 1223

module.exports = {
  
  setCounter: (x) => {
    _counter = _counter + x;
  },
  getCounter: () => {
    return _counter;
  },
  
}

剛剛再次測試,它現在可以工作了……沒有意義。 我可能應該刪除這個問題,但有些人已經花時間回復了。


let _counter = 1223

module.exports = {
  setCounter: () => {
    _counter = _counter + 1;
    return _counter // or return ++counter
  },  
}

嘗試做一個簡單的二傳手。

i = getCounter();
i++;
setCounter(i);

二傳手在哪里

set setCounter(value){
    _counter = value;
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM