Что такое функция обратного вызова? Я действительно не знаю, как использовать и функционировать функцию обратного вызова JS, прежде чем изучать ее. В следующей статье я представлю вам студентам пример моей функции обратного вызова обучения. Студенты, которые должны знать, не должны быть осторожны, чтобы не ввести ссылку.
Принцип функции обратного вызова:
Я уйду сейчас и уведомию тебя. "
Это асинхронный процесс. Во время процесса «Я собираюсь» (выполнение функции), «вы» можете сделать что угодно, «прибывает» (выполнение функции завершено) и «уведомлять вас» (обратный вызов) после того, как процесс «уведомления вас» (обратный вызов) выполняется
пример
1. Основные методы
<script language = "javascript" type = "text/javascript"> function dosomething (обратный вызов) {//… // вызывающий обратный вызов. </script>Или использовать анонимную функцию
<script language = "javascript" type = "text/javascript"> функция Dosomhething (damsg, обратный вызов) {alert (damsg); if (typeof обратного вызова == "function") callback (); } dosomething ("function function", function () {alert ("То же, что и форма обратных вызовов jQuery!");}); </script>2. Расширенные методы
Метод вызова с использованием javaScript
<script language = "javascript" type = "text/javascript"> function thing (name) {this.name = name;} thing.prototype.dosomething = function (callback) {// вызвать наш обратный вызов, но используя наш собственный экземпляр в качестве контекста. Вещь ('Джо'); t.dosomething (foo); // предупреждает «Джо» через `foo` </script>Передайте параметры
<script language = "javascript" type = "text/javascript"> function thing (name) {this.name = name;} thing.prototype.dosomething = function (обратный вызов, привел) {// вызвать наш обратный вызов, но используя наш собственный экземпляр в качестве контекста. = новая вещь ('Джо'); t.dosomething (foo, 'hi'); // предупреждает "Привет Джо" через `foo` </script>Параметры передачи с использованием javaScript
<script language = "javascript" type = "text/javascript"> function thing (name) {this.name = name;} thing.prototype.dosomething = function (обратный вызов) {// Создать наш обратный вызов, но используя наш собственный экземпляр в качестве контекста. " + this.name +" " + три +" " + два +" " + One);} var t = new Thing ('joe'); t.dosomething (foo); // предупреждает "Привет Джо 3 2 1" через `foo` </script>пример
// Если предоставленный источник данных является целым числом, которое является оценкой студента, когда num <= 0, он обрабатывается подлежащим уровнем, и когда n> 0 обрабатывается верхним слоем.
// скопировать следующую функцию и сохранить ее на 1.JS
Функция f (num, обратный вызов) {if (num <0) {alert ("Вызовите функцию низкого уровня в процесс!"); Alert («Оценка не может быть отрицательной, ошибка ввода!»); } else if (num == 0) {alert ("Вызовите функцию низкого уровня в процесс!"); оповещение («Студент, возможно, не сдал экзамен!»); } else {alert ("Вызовите функцию высокого уровня, чтобы обработать!"); перезвонить(); }}// Сохранить следующий файл test.html в том же каталоге, что и 1.JS:
<! Doctype html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-equiv = "content-vent" http-equiv = "content-" http-equiv = "content-" http-eviv = "content" http-equiv = " charset = gb2312 "> <script src =" 1.js "type =" text/javascript "> </script> <title> unt out wated document </title> <script type =" text/javascript "> function test () {var p = document.getelementbyid (" pp "); pp.innerText = ""; var num = document.getElementById ("Оценка"). Значение; f (num, function () {// анонимная функция обработки высокого уровня if (num <60) Alert («Неудача!»); else if (num <= 90) Alert («Отличный результат!»); else Alert («Отличный результат!»);}) pp.innerText = «С 1978 QQ558064!» } </script> </head> <body> <p> Пример функции обратного вызова: когда студент оценивает <= 0 точек, нижний слой будет обрабатывать его; Когда счет> 0, верхний слой справится с ним. </p> Введите оценки студентов <input type = "text" id = "оценка"> <input type = "onclick =" test () "value =" Проверьте результаты "> <p id =" pp "> </p> </body> </html>Ниже приведены дополнения от других пользователей сети:
Режим обратного вызова в JavaScript:
Как показано в:
функция writeCode (обратный вызов) {// выполнить некоторые вещи, callback (); // ...} function intrducebugs () {//........ontroduce уязвимость} worpecode (intrducebugs);Мы передаем применение функции в wripteCode (), чтобы wripeCode выполняет ее в соответствующее время (вернуться, чтобы позвонить позже)
Давайте сначала посмотрим на не очень хороший пример (он будет рефактор позже):
// Моделируйте узлы DOM на странице поиска и возвращайте найденные узлы в массиве равномерно // Эта функция используется только для поиска логической обработки для узлов DOM var incednodes = function () {var i = 100000; // Большое количество петлей, var nodes = []; // Использование для сохранения найденных узлов DOM; // while (i) {i -= 1; узлы. push (найденный); } возвращаемые узлы; } // Скрыть все узлы DOM найдены var hide = function (узлы) {var i = 0, max = nodes.length; for (; i <max; i ++) {// Есть кронштейны после нахождения, чтобы немедленно указать выполнение. Сначала выполнить findnodes (), а затем выполнить Hide () <hide (findnodes ()); Выполнить функцию}; узлы [i] .style.display = "none"} Приведенный выше метод неэффективен. Считается, что Hide () должен снова пересечь узлы массива, возвращаемые FindNodes (). Как избежать таких ненужных петлей. Мы не можем напрямую скрыть узел запроса в FindNodes (этот поиск может изменить логическую связь), так что это больше не является общей функцией. Решение состоит в том, чтобы использовать режим обратного вызова, где вы можете передать скрытую логику узла в поисках nodes () в функции обратного вызова и делегировать ее для выполнения // Refactor FindNodes для принятия функции обратного вызова var indodes = fucntion (callback) {var i = 100000, nodes = [], sud; // Проверьте, доступна ли функция обратного вызова для обратного вызова if (typeof обратного вызова! == 'function') {callback = false; } while (i) {i -= 1; if (обратный вызов) {обратный вызов (найденный); } nodes.push (найдено); } возвращаемые узлы; } // Функция проверки var hide = function (node) {node.style.display = 'none'; } // Найдите последующий узел и скрыть его в последующем выполнении FindNodes (hide); // Сначала выполнить FindNodes, а затем скрыть. Конечно, функция обратного вызова также может быть создана при вызове основной функции: findnodes (function (node) {node.style.display = 'none';});