我是新手,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
}
我是新手,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
}
令人震惊的沉默的原因是几乎不可能以目前的形式回答您的问题。但无论如何我都会试一试。
大多数时候你不执行回调。您可能会将您的函数传递给 API,并在某些时候调用您的函数。因此,执行回调的是 API,而不是您。例如,这是使用 node.js 的 FileSystem API 的一种方法:
fs.readFile('/etc/passwd', {encoding:'utf-8'}, function (err, data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
第三个参数是一个函数,通常称为回调。该fs.readFile()
函数设置 I/O 并立即返回。在未来的某个时间点,I/O 完成并回调您传入的函数(因此称为回调),提供错误代码和可能的数据,此时您的函数可以用它做它想做的事。
如果您想自己执行回调,请编写一个函数,该函数接受一个函数并回调该函数,例如:
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) { … }
。这实际上是对回调的一种非常愚蠢的使用,因为您的函数可能只返回 double-x。无缘无故地使用回调使生活变得更加复杂。
原因fs.readFile()
和许多其他 node.js API 使用回调是因为它异步执行几乎所有阻塞操作,因此它不会阻塞主线程,这会使您的整个服务器在操作系统关闭并获取文件时暂停。因此,它不是等待文件被读取并返回内容,而是开始异步 I/O 操作并立即返回,这样您的程序就可以在 I/O 运行时执行其他操作(例如服务其他连接的客户端)在后台进行中。您将回调传递给,fs.readFile()
以便底层 I/O 子系统在数据最终到达时知道如何处理数据,因为到那时,主线程已经开始了其他冒险。这仍然使生活变得更加复杂(有时是可怕的),但这样做是有原因的。