wenn ich den Code auf die zweite Option wechaer ändern Es wird problematisch sein und wenn ja warum ???
Ich empfehle nicht, diese Änderung zu machen, weil es im Allgemeinen problematisch sein kann. Die Dokumentation für require.nextTick
(die kurz vor der Funktionsdefinition angezeigt wird) lautet:
Führen Sie etwas nach dem aktuellen Tick der Ereignisschleife aus.
Aufruf fn
verletzt synchron die Spezifikation, die Ausführung „nach dem aktuellen Tick“ geschehen soll. (Siehe das Ende meiner Antwort auf einen möglichen Einwand hier.)
Wenn Sie sich fragen, warum es ein Problem sein kann, der Ansicht, dass RequireJS hört Ereignisse DOM. Eine Sache, die eine Funktion wie require.nextTick
mit tut, ist eine Chance geben, Event-Handler zu laufen. Wenn Sie require.nextTick
festlegen, um seine Funktion synchron auszuführen, geben Sie Ereignishandlern keine Möglichkeit zum Ausführen. In einigen Fällen könnte dies dazu führen, dass RequireJS nicht mehr ordnungsgemäß funktioniert.
An diesem Punkt könnte man die Definition von nextTick
ist das Objekt, so dass es in Ordnung ist es fn
nennen synchron zu haben, denn wenn setTimeout
nicht definiert ist, dann ist es fn
synchron aufrufen:
req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) {
setTimeout(fn, 4);
} : function (fn) { fn(); };
Ich denke, das ist für ungewöhnliche Fälle gedacht, nicht die übliche Situation, wo Module durch HTTP-Anfragen asynchron geladen werden. In einigen Fällen, wie vielleicht eingebettete Geräte, denen die JS-Umgebung von Browsern oder Node fehlt.js, die einzige Möglichkeit, eine Software mit RequireJS auszuführen, besteht darin, ein optimiertes Paket zu laden, das r.js
durchlaufen hat und require.js
im Paket enthält. In einem Fall wie diesem, mit nextTick
Aufruf fn
synchron wäre moot weil, wenn RequireJS ausgeführt wird, wurden alle Module bereits geladen.
was wollen Sie genau? –
@BhojendraNepal - Ich mag überprüfen, ob die Funktion auf dem nächsten Tick nach dem Wechsel genannt wird ... –
schließlich definierte Funktion wird die vorherigen außer Kraft setzen, so dass die vorherigen nicht ausgeführt gehen werden. –