gpt4 book ai didi

javascript - Node.js 可以从函数调用函数吗?

转载 作者:行者123 更新时间:2023-11-28 20:26:17 25 4
gpt4 key购买 nike

我正在通过转换现有的 Rails 项目来学习 Node.js。我花了一些时间来了解回调和 Node.js 的异步特性。

第一次一般尝试看起来不错,我的 RoR 功能被复制,并且使用 Node.js 的总体速度要快得多。

Having watched the nodecast here我开始怀疑我的创作是否违背了所有 Node 原则。

我有一些函数,根据结果调用其他函数。简单的 if、else if、else 逻辑。

我想弄清楚的是这样做是否可以,或者我是否应该使用类似 async package 的东西.

一个特定的函数如下所示:

  checkAuthorization: function(socket,callback) {
client.hget(socket.mac, 'authorized', function(err, val) {
callback(val);
if (val == null) {
checkExteralAuth(socket.mac, socket.serial, function(val) {
data = JSON.parse(val)
authorized = (data["live"] == 'yep') ? true : false
setRedisHash(socket.mac, 'authorized', authorized);
});
};
});
}

是否有一种模式“Node ”方式可以做到这一点?

最佳答案

为什么不会呢? Node.js 是一个 JavaScript 平台。在函数式编程语言中,在函数内部调用函数是完全可以接受的。你一直这样做。

也就是说,有时您可能希望避免简单地调用该函数,尤其是回调。您调用由callback 引用的函数的方式意味着,除非该函数显式绑定(bind)到某个上下文(使用bind),否则您将丢失上下文。

相反,callback.apply(this, [val]); 可能是开展业务的首选方式。

另一件事是,由于您要传递稍后调用的回调函数,因此您可能需要认真考虑尽可能多地使用异步。我对 Node.js 没有太多的经验,但就其本质而言,您会发现自己在编写回调、处理程序,并且到处都在使用一般的异步技巧。

拥有一个让这项工作变得更加轻松的软件包总是很方便......

关于javascript - Node.js 可以从函数调用函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17341279/

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