Как объяснить обратные вызовы на простом английском языке? Чем они отличаются от вызова одной функции из другой функции? - PullRequest
330 голосов
/ 07 марта 2012

Как объяснить обратные вызовы на простом английском языке? Чем они отличаются от вызова одной функции из другой, принимая некоторый контекст из вызывающей функции? Как объяснить их силу начинающему программисту?

Ответы [ 32 ]

0 голосов
/ 03 декабря 2014

в php это будет что-то вроде:

<?php

function string($string, $callback) {
     $results = array(
        'upper' => strtoupper($string),
        'lower' => strtolower($string),
        );

    if(is_callable($callback)) {
        call_user_func($callback, $results);
    }
}

string('Alex', function($name) {
    echo $name['lower'];
});
0 голосов
/ 11 марта 2012

Это с точки зрения загрузки веб-страницы:

Ваша программа работает на мобильном телефоне и запрашивает веб-страницу http://www.google.com. Если вы пишете свою программу синхронно, то функция, которую вы пишете для загрузкиданные будут работать непрерывно, пока все данные не будут загружены.Это означает, что ваш пользовательский интерфейс не будет обновляться и в основном будет выглядеть замороженным.Если вы пишете свою программу, используя обратные вызовы, вы запрашиваете данные и говорите «выполните эту функцию, когда закончите».Это позволяет интерфейсу пользователя по-прежнему разрешать взаимодействие с пользователем во время загрузки файла.После завершения загрузки веб-страницы вызывается ваша функция результата (обратный вызов), и вы можете обрабатывать данные.

По сути, она позволяет запрашивать что-то и продолжать выполнение в ожидании результата.Как только результат возвращается к вам через функцию обратного вызова, вы можете выбрать операцию, на которой он остановился.

...