基本回调函数

时间:2016-12-20 00:52:27

标签: javascript callback

我试图更好地理解" continuation-passing style"

转换同步代码

  function loadAvatarImage(id) {
        var profile = loadProfile(id);
        return loadImage(profile.avatarUrl);
    }

要异步

   function loadAvatarImage(id, callback) {
        loadProfile(id, function (profile) {
            loadImage(profile.avatarUrl, callback);
        });
    }

loadProfile如何在第二个参数中传递profile,在调用loadProfile之前等待loadImage(profile.avatarUrl, callback)如何解决?

2 个答案:

答案 0 :(得分:0)

本文暗示每个函数都应该是异步的。 因此,loadProfile函数也需要callback

function loadProfile(id, callback) { ... }

现在“that”函数应该异步执行,完成后再调用回调函数。 通常在AJAX中加载数据,或者。

从前几段开始,作者似乎没有做任何实际异步的事情。它只是具有回调的递归函数。但这一切都是同步发生的,除非你在某个地方进行了异步(或延迟)调用,这与给出的第一个例子不同。

javascript中异步编程的另一种方法是通过Promise对象。

答案 1 :(得分:0)

  

loadProfile如何在第二个参数的profile中传递,在调用loadImage(profile.avatarUrl,callback)之前,它如何知道等待loadProfile解析?

这些方面的东西:

function loadProfile( id, callback ) {

    var picture = '¯\_(ツ)_/¯';

    // setTimeout to simulate any other async process, like fetching an image
    setTimeout( function ( ) {
        // Calls callback after 1 second
        callback( picture );
    }, 1000 );
}