0

我不明白为什么 if-else 构造不起作用。

const Diagnostics = require('Diagnostics');
const Reactive = require('Reactive');


var num = 5;
var firstCondition= false;
var secondCondition = false;

function func(){
    firstCondition = Reactive.ge(num, 10);
    secondCondition = Reactive.lt(num, 10);
    if(firstCondition){             //false
      num = 0;
    } else if(secondCondition){     //true
      num = 1;
    }
}
func();

Diagnostics.watch("num - ", num);
Diagnostics.watch("firstCondition ", firstCondition);
Diagnostics.watch("secondCondition ", secondCondition);

num 显示 0:( 我做错了什么?它是特定于反应式编程的吗?

4

3 回答 3

2

您的示例中有两个问题:

  • 信号可能会因为变量存在而令人困惑并返回 true,因此您需要检查:if (firstCondition.pinLastValue())以获取布尔信号的值。
  • 其次,我猜你的功能没有更新,你需要这样的东西:

    const Time = require('Time'); const interval = Time.setInterval(func(), 500);
    
于 2019-12-12T08:50:35.123 回答
1

你需要在这里使用不同的心态:

const conditionedSignal = inputSignal.ge(10).ifThenElse(0, 1);

这是一个 scalarSignal 类,而不是 JS 编号!

于 2019-12-20T14:58:48.347 回答
0

Spark AR Studio 使用反应式编程,这是一种使用异步数据流的声明式编程模型。本指南将介绍 Spark AR Studio 中反应式编程的好处和使用。

https://sparkar.facebook.com/ar-studio/learn/documentation/scripting/reactive/

于 2019-12-17T19:44:55.503 回答