0

我编写了一个函数,该函数将我发送到网页的位掩码值转换,然后使用它向用户显示传感器的位置和数量。这是非常基本的,它接受一个数字,并使用按位数学来检查 a1的位置,然后将该位置数字从数组存储到要返回的字符串中。

但是当我给出值时出现错误:

bit>= 30 和TEMPmax= 9

当我使用这些值时,我得到:

Max execution steps exceeded (200) | Exception of type 'Jint.Native.JsException' was thrown.

但是如果我改变TEMPmax = 5and bit= 30,我不会得到任何错误。我将此用作临时修复,但从代码中您可以看到它最多可以有八个不同的位置。

我不明白为什么我超过了执行步骤,for()循环只发生了 9 次,if循环中的东西,可能我认为还有其他事情发生(请启发我)。

问题:

  • 为什么我会超出我的最大执行步骤?
  • 我该如何解决这个问题或使其高效?
  • 如何确定代码中发生了多少个执行步骤?

这是我写的代码(自我解释):

var all = ["pos1", "pos2", "pos3", "pos4", "pos5", "pos6", "pos7", "pos8"]; //temp sensors possible
var TEMPmax = 9;
var text = "";  //value to return
var bit = fields.get('TotalTempsensors', 0); // none


if(bit > 1){ 
    for(var i = 0; i < TEMPmax; i++){

        if((bit & (1 << i))){

            text += all[i - 1];
            text += ",";

        }   
    }
}
else{
    text = "ERROR";
}

return text;
4

1 回答 1

0

看来您使用的是旧版本的 Jint。请在https://github.com/sebastienros/jint或 Nuget https://www.nuget.org/packages/Jint/上找到最新的

于 2015-10-19T21:25:37.807 回答