javascript - node.js 函数回调

标签 javascript node.js

<分区>

我是 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 的文件系统 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 子系统知道在数据最终到达时如何处理数据,因为到那时,主线程已经开始其他冒险了.这仍然让生活变得更加复杂(有时非常可怕),但这是有充分理由的。

关于javascript - node.js 函数回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19721538/

相关文章:

Javascript 正则表达式西里尔字母模式

javascript - 如何在 angularjs 中递归源脚本(组件)

node.js - Nodejs Bluebird promise 在处理图像时失败

node.js - 如何在调用 twilio 调用时获取 session Sid

javascript - 字符串中的字符串不能被换行符分割

javascript - D3js 将 fill 设置为 none 以编程方式影响 onClick 事件

javascript - 如何为每列设置单独的柱形图颜色?

javascript - 在javascript中滚动时放大缩小图像

node.js - Webpack:如何加载原始 Node `.node` 文件

node.js - 在 REST 应用程序中处理数据库错误时,什么被视为标准?