首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >callback()或return callback()

callback()或return callback()
EN

Stack Overflow用户
提问于 2013-08-14 03:31:00
回答 1查看 21.3K关注 0票数 34

可能我对Node的事件循环理解得不够好。

假设我有一个包含异步函数async_func的函数foo。我有没有

代码语言:javascript
复制
//1
function foo(callback) {
       //stuff here
       async_func(function() {
            //do something
            callback();
       });
//this eventually get executed
}

代码语言:javascript
复制
//2
function foo(callback) {
       //stuff here
       async_func(function() {
            //do something
            return callback();
       });
//never executed
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 03:37:33

实际上,在示例2中,每次都会执行//never executed。它是从回调返回的,而不是从包装函数返回的。

有时调用者实际上需要一些返回值,并且行为可以根据返回值进行更改。看到return callback()的另一个常见原因是,这是一种明显的缩短所在函数的方法。例如。

代码语言:javascript
复制
function doSomething(callback) {
    something(function(err, data) {
        if(err) return callback(err);
        // Only run if no error
    });
    // Always run
}

即使没有使用返回值,它也使用return来确保执行不会超过错误条件。你可以很容易地这样写,也有同样的效果。

代码语言:javascript
复制
function doSomething(callback) {
    something(function(err, data) {
        if(err) {
            callback(err);
            return;
        }
        // Only run if no error 
    });
    // Always run
}
票数 53
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18217589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档