运行taskRunner时遇到问题

时间:2019-01-05 12:31:34

标签: javascript node.js

我正在研究一个任务运行程序,当它加载到node.js中时可以接受命令以运行某些功能,例如使数字为正数或负数,我需要能够执行代码并能够设置不同的值起始值和开始使用的数字必须是调用函数时要更改的数字。

我在网上四处张望,发现了另一篇名为arithmaticTaskRunner的帖子,该帖子看起来与我需要的东西相似,但是没有说明或显示调用函数时如何使用起始值,也没有说明如何获取数学函数工作。

class TaskRunner {
constructor()
{
    this.tasks = [];
}
static set taskCount(counter)
{
    throw new('readonly, Value${value}');
}
addNegationTask()
{
    this.tasks.push()
}
addAdditionTask() 
{
    this.tasks.push();
}
addMultiplicationTask() 
{
    this.tasks.push();
}
run(startValue) 
{
    return this.tasks.reduce((x, fn) => fn(x), startValue);
}
}
let taskRunner = new taskRunner()
taskRunner.addAdditionTask()
taskRunner.addMultiplicationTask()
taskRunner.addAdditionTask()

这应该是在加载TaskRunner并在node.js中调用函数时的结果,我目前对node.js并没有足够的了解,并希望可以在线学习

> let taskRunner = new ArithmeticTaskRunner()
undefined
> taskRunner.addAdditionTask(2)
undefined
> taskRunner.addMultiplicationTask(4)
undefined
> taskRunner.addAdditionTask(10)
undefined
> taskRunner.execute(2)
26
> taskRunner.execute(-2)
10

但是当我将文件加载到node.js中时,我得到的只是整个文件的加载,并且终端显示了文件中的所有内容。

1 个答案:

答案 0 :(得分:0)

您可以使用OperationExecutor类的Builder模式中的一些概念来执行此操作。 Builder允许您逐步构建某些东西,最后您可以获得结果。

class OperationExecutor {
    constructor(value) {
        this.value = value; //value is the initial number on which we operate
    }


    add(valueToAdd) {
        this.value += valueToAdd;
        return this.value;
    }

    multiply(multiplyBy) {
        this.value = this.value * this.multiplyBy;
        return this.value;
    }

    getValue() {
        return this.value;
    }
 }
 var operationExecutor = new OperationExecutor(2);
 operationExecutor.add(4);
 operationExecutor.multiply(5);
 console.log(operationExecutor.getValue());

所有调用都是同步的,因为如果您不知道前一个计算出的值就无法运行任务。

更好的方法是创建一个Integer类,该类具有add / multiply / divide / sub / modulo等操作以及一个getValue()方法。这样,每个人都可以很清楚地计划使用这些对象的方式。基本思想是相同的。