有可能我不太了解Node的事件循环.
说我有一个包含异步函数async_func的函数foo.我有吗
//1 function foo(callback) { //stuff here async_func(function() { //do something callback(); }); //this eventually get executed }
要么
//2 function foo(callback) { //stuff here async_func(function() { //do something return callback(); }); //never executed }
解决方法
实际上,在你的样例2中,//每次都不会执行.它从回调函数返回,而不是从包装函数返回.
有时,调用者实际上期望一些返回值,并且行为可以基于此而改变.看到一个返回回调()的另一个常见的原因只是一个简单的方法来缩短你所处的功能.
function doSomething(callback) { something(function(err,data) { if(err) return callback(err); // Only run if no error }); // Always run }
即使没有使用返回值,它使用return来确保执行不会超过有条件的错误.你可以像这样很容易地写出这样的效果.
function doSomething(callback) { something(function(err,data) { if(err) { callback(err); return; } // Only run if no error }); // Always run }
原文地址:https://www.jb51.cc/nodejs/241262.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。