如何为Node.js编写异步函数
我试图研究应如何精确地编写异步函数。经过大量的文档研究之后,我仍然不清楚。
问我问题的另一种方式是:我应该如何解释以下功能?
var async_function = function(val, callback){ process.nextTick(function(){
callback(val);
});
};
回答:
您似乎将异步IO与异步功能混淆了。由于非阻塞IO更好,所以node.js使用异步非阻塞IO。理解它的最好方法是去观看ryan dahl的一些视频。
只需编写普通函数,唯一的区别是它们不会立即执行而是作为回调传递。
通常,API会为您提供以err作为第一个参数的回调。例如
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
在当前eventloop调用栈为空之后触发。这调用堆栈是空后async_function
和console.log(43)
已经运行。因此,我们先打印43,再打印42。
您可能应该对事件循环进行一些阅读。
以上是 如何为Node.js编写异步函数 的全部内容, 来源链接: utcz.com/qa/413901.html