gpt4 book ai didi

javascript - Node.js - 匿名函数中的参数而不向其传递变量?

转载 作者:行者123 更新时间:2023-11-28 19:12:10 24 4
gpt4 key购买 nike

我有 C/C++ 背景,在尝试理解 Node.js 的语法时遇到了很大的困难。不管怎样,我在网上找到了一些代码来解释阻塞和非阻塞代码之间的区别,它让我困惑了几个小时。我尝试过搜索和阅读书籍,但找不到答案。示例代码从数据库检索用户 ID。

阻止版本:

function getUser(id) {
var user = db.query(id);
return user;
}

console.log('Name: ' + getUser(432).name);

非阻塞版本 (Node.js):

function getUser(id, callback) {
db.query(id, callback);
}

getUser(432, function (user) {
console.log(user.name);
});

我对阻止版本很满意,因为在这种情况下,用户 ID 被分配给变量 user。我似乎无法理解的是匿名函数中的 user 参数。似乎 user 突然出现,然后有指令对其执行操作,与现有变量没有任何关系。

程序如何知道user是什么?它如何与用户的 ID 建立联系?老实说,我无法判断是否是我对 JavaScript/Node 缺乏了解,或者是编写这段代码的人没有费心去完成它。我所知道的是,这在 C/C++ 中没有意义。

最佳答案

好吧,您已经要求程序为您获取一个用户,并提供了一个接受参数(或更多,取决于库)的函数。操作完成后,getUser 将调用您传递的带有操作结果的回调。

这是一个为您提供的虚拟 getUser 实现:

function getUser(id, callback) {
setTimeout(function() {
var result = {id: id, name: "Madara"};
callback(result);
}, 1000); // Wait a second before doing it. Asynchronous!
}

getUser(42, function(user) { console.log(user); });

该函数将等待一秒钟,然后调用您使用一个参数传递的回调,在本例中,该回调是一个带有您传递的 ID 且名称为“Madara”的对象。

请注意,getUser 没有任何阻塞,因此 getUser立即返回,而无需等待调用回调。

关于javascript - Node.js - 匿名函数中的参数而不向其传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com