9

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

在 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;
}

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

4

3 回答 3

10

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

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

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

于 2013-08-09T16:41:19.810 回答
5

你应该使用回报。

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

于 2013-08-09T16:39:19.160 回答
1

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

于 2013-08-09T16:37:52.047 回答