gpt4 book ai didi

javascript - 如何为 Node.js 编写异步函数

转载 作者:IT老高 更新时间:2023-10-28 21:47:13 26 4
gpt4 key购买 nike

我试图研究应该如何编写异步函数。在翻阅了大量文档之后,我仍然不清楚。

如何为 Node 编写异步函数?我应该如何正确实现错误事件处理?

问我问题的另一种方式是:我应该如何解释以下函数?

var async_function = function(val, callback){
process.nextTick(function(){
callback(val);
});
};

另外,我发现 this question on SO (“如何在 node.js 中创建非阻塞异步函数?”)很有趣。我觉得还没有回答。

最佳答案

您似乎将异步 IO 与异步函数混淆了。 node.js 使用异步非阻塞 IO,因为非阻塞 IO 更好。了解它的最好方法是去看 ryan dahl 的一些视频。

How do I write asynchronous functions for Node?

只写普通函数,唯一的区别是它们不是立即执行而是作为回调传递。

How should I implement error event handling correctly

通常,API 会为您提供一个回调,并将错误作为第一个参数。例如

database.query('something', function(err, result) {
if (err) handle(err);
doSomething(result);
});

是一种常见的模式。

另一个常见的模式是on('error')。例如

process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
});

编辑:

var async_function = function(val, callback){
process.nextTick(function(){
callback(val);
});
};

上述函数调用时

async_function(42, function(val) {
console.log(val)
});
console.log(43);

42 异步打印到控制台。特别是 process.nextTick 在当前事件循环调用堆栈为空后触发。 async_functionconsole.log(43) 运行后,该调用堆栈为空。所以我们打印 43,然后打印 42。

您可能应该阅读一下事件循环。

关于javascript - 如何为 Node.js 编写异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898779/

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