CallbackFonction, comme son nom l'indique, est une fonction utilisée pour le rappel. La fonction de rappel n'est qu'un fragment fonctionnel, une fonction implémentée par l'utilisateur selon la convention d'appel de la fonction de rappel. La fonction de rappel fait partie d'un workflow et le workflow détermine le moment de l'appel de fonction (rappel).
Le rappel devrait à l'origine être un concept très simple, mais peut-être parce que nous utilisons généralement uniquement l'interface de rappel écrite par le système pour nous, nous implémentons rarement les rappels, donc j'implémente moi-même les rappels. J'avais encore un peu le vertige quand j'ai commencé, j'écris donc cet article pour l'enregistrer, et également partager avec vous comment écrire une interface de rappel.
Rappel
La notion de rappel : Par exemple, si on veut poser une question à quelqu'un d'autre, on pose la question à l'autre personne Après en avoir parlé, l'autre partie a dit oui, quand j'aurai fini cette question, je vous dirai que les rappels sont utilisés à ce moment-là, car on ne sait pas quand l'autre partie aura fini, mais l'autre le parti prendra l’initiative de nous retrouver après l’avoir terminé.
Rappel synchrone
Lorsque le code s'exécute vers un certain emplacement, s'il rencontre un code qui nécessite un rappel, il attendra ici et attendra que le résultat du rappel revienne avant de poursuivre l'exécution.
Rappel asynchrone
Lorsque le code est exécuté sur le code qui nécessite un rappel, il ne s'arrêtera pas, mais continuera à s'exécuter. Bien sûr, le résultat du. le rappel peut être modifié après un certain temps.
Code spécifique :
Le code global est encore très simple. Il simule une imprimante et une personne. L'imprimante a pour fonction d'imprimer, mais l'impression prend du temps. Les commentaires ne peuvent pas être donnés lors de la réception de la tâche et vous devez attendre un certain temps avant de pouvoir donner des commentaires. Tout ce que cette personne veut faire, c'est imprimer un CV et connaître les résultats de l'impression. Le code ici implémente les deux méthodes.
Callback.java
public interface Callback { void printFinished(String msg); }
Printer.java
public class Printer { public void print(Callback callback, String text) { System.out.println("正在打印 . . . "); try { Thread.currentThread(); Thread.sleep(3000);// 毫秒 } catch (Exception e) { } callback.printFinished("打印完成"); } }
People.java
public class People { Printer printer = new Printer(); /* * 同步回调 */ public void goToPrintSyn(Callback callback, String text) { printer.print(callback, text); } /* * 异步回调 */ public void goToPrintASyn(Callback callback, String text) { new Thread(new Runnable() { public void run() { printer.print(callback, text); } }).start(); } }
Main.java
public class Main {//测试类,同步回调 public static void main(String[] args) { People people = new People(); Callback callback = new Callback() { @Override public void printFinished(String msg) { System.out.println("打印机告诉我的消息是 ---> " + msg); } }; System.out.println("需要打印的内容是 ---> " + "打印一份简历"); people.goToPrintSyn(callback, "打印一份简历"); System.out.println("我在等待 打印机 给我反馈"); } }
Main.java
public class Main {//异步回调 public static void main(String[] args) { People people = new People(); Callback callback = new Callback() { @Override public void printFinished(String msg) { System.out.println("打印机告诉我的消息是 ---> " + msg); } }; System.out.println("需要打印的内容是 ---> " + "打印一份简历"); people.goToPrintASyn(callback, "打印一份简历"); System.out.println("我在等待 打印机 给我反馈"); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!