这个函数调用模式如何工作?

时间:2017-07-10 18:13:11

标签: javascript node.js

阅读第78页的“Node.js设计模式”一书,我找到了以下代码:

var tasks = [...];
var concurrency = 2, running = 0, completed = 0, index = 0;

function next() {

    while(running < concurrency && index < tasks.length) {
        task = tasks[index++];

        task(function() {                     // THE ISSUE IS HERE!!!
            if(completed === tasks.length) {
                return finish();
            }
            completed++, running--;
            next();
        });                                  // THE END OF MY ISSUE
    running++;
    }
}
next();

function finish() {
   //all tasks finished
}

所以我无法理解代码段task(function(){...});的含义。将语法划分为自身。这种风格怎么称呼?可能是一些简写,或者,例如,“将函数作为参数(或方法)传递给对象”?我在哪里可以阅读这个语法?我一无所获。

1 个答案:

答案 0 :(得分:0)

接受另一个函数作为参数的函数称为Higher Order Function

我不会称之为“语法”。它更像是一种创建更通用代码的技术。

在这种情况下,传递的函数可能是稍后将执行的回调。由于异步代码的使用频率,这在Javascript中非常常见(但并非特定)。