MaxMSP的javascript中setTimeout存在问题

MaxMSP的javascript中setTimeout存在问题,javascript,Javascript,我已经研究了很多其他问题,但我似乎无法用setTimeout解决这个问题 所以我一直在研究这个问题,但由于某些原因,setTimeout不起作用,有什么提示吗 function curves(val_name, mini, maxi, t_amount, steps) { //t_amount MUST be in ms for (x = 0; x < steps; x++) { var x_mod = scale(x, -6, 0, 0, steps);

我已经研究了很多其他问题,但我似乎无法用setTimeout解决这个问题

所以我一直在研究这个问题,但由于某些原因,setTimeout不起作用,有什么提示吗

function curves(val_name, mini, maxi, t_amount, steps) {
    //t_amount MUST be in ms
    for (x = 0; x < steps; x++) {
        var x_mod = scale(x, -6, 0, 0, steps);
        var value = setTimeout(calculate_curve, (t_amount / steps), x_mod);

        switch (val_name) {
            case "vol_stretch1":
                var vol_stretch1 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch1");
                vol_stretch1 = value
                break;
            case "vol_stretch2":
                var vol_stretch2 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch2");
                vol_stretch2 = value
                break;
            case "vol_stretch3":
                var vol_stretch3 = this.patcher.getnamed("stretching").subpatcher(0).getnamed("vol_stretch3");
                vol_stretch3 = value
                break;
        }
    }
}

function calculate_curve(x) {
    var constant_e = 2.718281828459;
    var result = (1 / 1 + (constant_e ^ (x * -1))) * -1; //sigmoid function * -1 to have the nice rise
}

function scale(unscaledNum, minAllowed, maxAllowed, minimum, maximum) {
    return (maxAllowed - minAllowed) * (unscaledNum - minimum) / (maximum - minimum) + minAllowed;
}
函数曲线(值名称、最小值、最大值、t\u值、步长){
//t\u金额必须以毫秒为单位
对于(x=0;x

您可以忽略开关,因为它与MaxMSP的扩展一起工作,但在这里并不重要。我返回的错误是“Javascript ReferenceError:setTimeout未定义”。非常感谢您的帮助

我以前没有与Max合作过,但通过少量搜索,它看起来像是在按照插件的思路编写东西

看起来Max正在运行自己的Javascript环境
setTimeout
是Javascript浏览器的
窗口
对象上的一种方法,因此它不一定像Max那样在浏览器之外的Javascript中实现

推荐的替代方案似乎是使用环境公开的任务对象,这里有一些文档:

我没有办法测试这一点,但从文档中可以看出,按照下面的思路应该可以做到:

var task = new Task(function() {
    calculate_curve(x_mod);
}, this);
task.schedule((t_amount / steps));

你是怎么运行这个JS的?是否在浏览器/节点中/etc@George-看起来Max就是环境,它没有setTimeout实现。@Hecksa我就是这么想的,如果是这样的话,你的回答很好地涵盖了它。非常感谢你和George。我听说过JS任务对象,但出于某种原因,我从未在这里想到过它。我感谢你的帮助