В чем разница между продолжением и обратным вызовом?
мы просматриваем всю сеть в поисках просветления о продолжениях, и это 'Поразительно, как простейшие объяснения могут настолько запутать программиста JavaScript, как я. Это особенно верно, когда большинство статей объясняют продолжения с помощью кода в Scheme или используют монады.
Теперь, когда я, наконец, думаю, что яЯ понял суть продолжения. Я хотел знать, является ли то, что я знаю, правдой. Если то, что я считаю правдой, на самом деле не так, тоНевежество, а не просветление.
Так вот'Что я знаю:
Почти во всех языках функции явно возвращают значения (и контролируют) их вызывающей стороне. Например:
var sum = add(2, 3);
console.log(sum);
function add(x, y) {
return x + y;
}
Теперь в языке с функциями первого класса мы можем передать управляющее и возвращаемое значение обратному вызову вместо явного возврата вызывающей стороне:
add(2, 3, function (sum) {
console.log(sum);
});
function add(x, y, cont) {
cont(x + y);
}
Таким образом, вместо возврата значения из функции мы продолжаем с другой функцией. Поэтому эта функция называется продолжением первой.
И что'Разница между продолжением и обратным вызовом?