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

时间:2013-08-09 16:35:31

标签: javascript performance

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

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

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

function two(param, callback) {
    var answer;
    //do work
    callback(answer);
}

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

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

function two(param, callback) {
    var answer;
    //do work
    return answer;
}

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

3 个答案:

答案 0 :(得分:10)

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

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

我建议直接从answer返回two,而不是实施回调。太多的回调可能会导致所谓的Callback Pyramid

答案 1 :(得分:5)

你应该使用回报。

回调适用于执行异步操作,否则它们无用的开销。

答案 2 :(得分:1)

你绝对应该使用return。回调适用于您希望在完成函数或异步事件(如Ajax调用)后执行某些自定义代码的时候。