Spark AR如果构造无法正常工作,为什么还要if?else?

时间:2019-12-08 12:17:19

标签: javascript reactive-programming spark-ar-studio

我不明白为什么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 :(我在做什么错?它是响应式编程的特定内容吗?

3 个答案:

答案 0 :(得分:0)

您的示例中有两个问题:

  • 信号可能会令人困惑,并且仅由于变量存在而返回true,因此您需要检查:if (firstCondition.pinLastValue())以获取布尔信号的值。
  • 第二,我想您的函数没有更新,您需要这样的东西:

    const Time = require('Time'); const interval = Time.setInterval(func(), 500);
    

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您需要在此处使用其他思维方式:

Celery takes over the task - - calls first 10 users - sleeps for 1 min - calls next 10 users - sleeps for 1 min ... and so on till a user performs a certain action.

这是一个scalarSignal类,而不是JS Number!