如何编写一个通用函数,将一个参数传递给then函数然后调用多次

时间:2014-03-30 15:49:48

标签: javascript

我一直坚持这个作业:

  

创建一个通用函数,输出一行倒计时   网页,然后是警报,并接收要输出的数据   输入参数。
  使用该功能输出倒计时的每一行和一个警报   请注意,您正在输出倒计时到浏览器   窗口这次,不要发出警报!   警报仅用于指示何时输出下一行

我需要帮助来解决一个只传递一个参数然后可以被调用13次的泛型函数。写一个输出倒计时数字部分的for循环。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你想创建一个允许你传递数据的函数,然后你可以调用该函数来逐行输出数据。

要做到这一点,这种方式是不可能的,但这种方法几乎是一样的:

function createOutputFunction(dataArray)
{
    return function() {
        document.write(dataArray.shift()); // This writes the first element of the dataArray to the browser
    };
}

//It can then be used like this
outputFunction = createOutputFunction(["Banana", "Mango", "Apple"]);

outputFunction();
outputFunction();
outputFunction();

" createOutputFunction"函数返回一个可以读取" dataArray"的函数。变量并在每次调用时打印其第一个元素。

答案 1 :(得分:0)

我认为这里的关键是他们要求" Generic"。

这意味着除了它正在做的事情之外,它不需要知道任何事情。 它也 通常 意味着它不应该记住上次做了什么,或者下次做什么时做的事情。'被称为(除非您正在编写专门用于记忆的通用结构)。

现在,规范的措辞很差,但是一个通用的功能:

  1. 接受(输入)数据写入
  2. 将输入写入页面
  3. 致电提醒
  4. 比你想象的要简单得多。

    var writeInputAndAlert = function (input) {
        // never, ever, ***ever*** use .write / .writeLn in the real world
        document.writeLn(input);
        window.alert("next");
    };
    

    如果我是您的老师,我会重写window.alert来处理 非通用 部分。
    它是非通用的,因为它知道程序的规则,它会记住你的位置,以及你去往的地方。

    var countFrom    = 100,
        currentCount = countFrom,
        countTo      = 0;
    
    var nextCount = function () {
        currentCount -= 1;
        if (currentCount >= countTo) { writeInputAndAlert(currentCount); }
    };
    
    window.alert = nextCount;
    

    修改

    var countdownArray = ["ten", "nine", "eight", "Ignition Start", "Lift Off", "We have Lift Off"],
        i = 0, end = countdownArray.length, text = "",
    
        printAndAlert = function (item) {
            alert();
            document.write(item);
        };
    
    for (; i < end; i += 1) {
        text = countdownArray[i];
        printAndAlert(text);
    }
    

    这真的不需要比这更难 printAndAlert是一个通用函数,它接受一个输入,写入输入并触发警报 您可以在for循环内调用它,并在数组中使用每个值 这就是它的全部内容。