Javascript - 返回值或使用回调函数

Tor*_*sen 8 javascript performance

我很好奇什么被认为是更好的风格/正确的做事方式.

在javascript中,我可以执行以下操作:

function one() {
    two(param, function(ans){
        // do more work
    });
}

function two(param, callback) {
    var answer;
    //do work
    callback(answer);
}
Run Code Online (Sandbox Code Playgroud)

但是我可以通过简单地返回答案得到类似的结果:

function one() {
    var ans = two(param);
    // do more work
}

function two(param, callback) {
    var answer;
    //do work
    return answer;
}
Run Code Online (Sandbox Code Playgroud)

我认为,如果您只需要"回答",那么最好使用第二个版本并返回该值而不是将回调函数作为参数传递等等 - 我的想法是否正确?关于两者相对表现的任何想法?同样,我希望返回版本在性能方面更好.

小智 10

通常,当您调用的函数将执行将以非阻塞方式执行的异步事件(例如进行AJAX调用)时,将使用回调函数.

非阻塞意味着一旦调用该函数,您的代码将在您刚刚调用的函数完成其工作之前继续执行下一个语句.因此,回调函数,您可以在非阻塞函数完成后放置您想要执行的代码.

我建议answer直接从而two不是实现回调.太多的回调可能会导致所谓的回调金字塔


Sim*_*ias 5

你应该使用回报.

执行异步操作时回调是合适的,否则它们是无用的开销.

  • 我认为它们在异步操作之外有用,例如,如果你创建自己的库或插件,允许用户在某个事件之后传入他们想要执行的函数会很有用. (6认同)