node.js函数callback

我是新的node.js我不知道如何在node.js执行下面的操作

 var data ="sampledata", name="testname", id=1; myTask(data,name,id); function myTask(data,name,id){ var job = jobDetails(id,data) } function jobDetails(id,data){ // some operations return jobs } 

惊愕的沉默的原因是,以目前的forms回答你的问题几乎是不可能的。 但无论如何,我会给它一个镜头。

大多数时候你不执行callback。 你可能会把你的函数传给一个API,并在某个时候调用你的函数。 这就是执行callback的API,而不是你。 作为一个例子,下面是使用node.js的FileSystem API的一种方法:

 fs.readFile('/etc/passwd', {encoding:'utf-8'}, function (err, data) { if (err) { console.error(err); } else { console.log(data); } }); 

第三个参数是一个函数,通常称为callback。 fs.readFile()函数设置I / O并立即返回。 在将来的某个时刻,I / O完成并callback你传入的函数(因此称为callback ),提供一个错误代码和可能的数据,在这一点上你的函数可以做它想要的。

如果你想自己执行一个callback函数,你可以编写一个函数来调用这个函数,例如:

 function pass_double_x_to(x, cb) { var two_x = 2 * x; cb(two_x); } pass_double_x_to(21, function(tmol) { console.log("zOMG, " + tmol + "!"); }); 

现在它是你的函数, pass_double_x_to ,正在function(tmol) { … }上执行callback。 这实际上是一个非常愚蠢的使用callback,因为你的函数可以返回double-x。 使用callback使生活更加复杂,没有理由。

fs.readFile()和其他许多node.js API使用callback函数的原因是,它几乎所有阻塞操作都是asynchronous执行的,所以它不会阻塞主线程,这会使得整个服务器在操作系统closures时暂停,文件。 所以,与其等待文件被读取并返回内容,它将开始一个asynchronousI / O操作,并立即返回,以便在程序可以closures时执行其他操作(如为其他连接客户端服务),而I / O在后台进行中。 您将callback传递给fs.readFile()以便底层I / O子系统在数据最终到达时知道如何处理数据,因为那时主线程已经在其他冒险中消失了。 这仍然使生活更加复杂(有时甚至是可怕的),但这是为了一个好的原因。