Kann ich ein JS-script von einem anderen mit `Holen`?
Untere Mittelstufe JS/JQ person hier.
Ich versuche zu entkommen callback-Hölle durch die Verwendung von JS fetch
. Dies ist in Rechnung gestellt, als "der Ersatz für AJAX", und scheint ziemlich mächtig. Ich kann sehen, wie Sie bekommen können HTML-und JSON-Objekten mit es... aber ist es in der Lage mit einer anderen JS-script von der, die du bist? Vielleicht gibt es noch eine neue Funktion im ES6 zu tun:
$.getScript( 'xxx.js' );
d.h.
$.ajax({ url : 'xxx.js', dataType : "script", });
...?
später, Antwort auf Joseph Der Träumer:
So probiert:
const createdScript = $(document.createElement('script')).attr('src', 'generic.js');
fetch( createdScript )...
... es hat nicht das Skript ausführen "generic.js". Meinst du etwas anderes?
- Warum nicht eine
<script>
dynamisch und pop, die url, die statt? - Callback-Hölle entkommen => Verspricht, async/await.
- Wenn das "später" ist ein experiment, was du versucht hast, dann hast du es falsch verstanden, was Sie meinte.
- Ja habe ich... das ist, warum ich sagte "meinst du sthg anderes". Als ich sage, ich bin kein JS-Experte. Pflege, mir zu zeigen, was Sie gemeint?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fetch API soll Versprechen-basierte API zum abrufen von remote-Daten. Be-random remote-Skript ist nicht AJAX - selbst wenn
jQuery.ajax
ist dazu in der Lage. Es wird nicht gehandhabt werden, Fetch API.Skript angefügt werden können, die dynamisch und umhüllt mit einem Versprechen:
SystemJS soll Versprechen-basierte API für Skript laden und können ebenfalls verwendet werden:
fetch
und, die mir gegeben, eine Antwort, die das problem löst.Gibt es ein paar Dinge zu erwähnen, die auf hier.
Ja, es ist möglich, ausführen, javascript nur vom server geladen. Holen Sie die Datei als text und Benutzer von eval(...) dies ist zwar nicht empfohlen, weil der untrackeable Nebenwirkungen und mangelnder Sicherheit!
Andere option wäre:
1. Laden Sie die javascript-Datei
2. Erstellen Sie ein script-tag mit dem Inhalt der Datei (oder url, da der browser speichert die Datei)
Dies funktioniert, aber es kann nicht befreien Sie von der callback-Hölle perse.
Wenn das, was Sie wollen, ist das laden von javascript-Dateien dinamically, die Sie verwenden können, zum Beispiel requirejs, können Sie festlegen, Module und laden Sie Sie dinamically. Werfen Sie einen Blick auf http://requirejs.org/
Wenn Sie wirklich wollen, um aus der callback-Hölle, was Sie tun müssen, ist
Denken Sie daran, dass Versprechen.dann gibt ein Versprechen
Denken Sie daran, dass verspricht kann aus