Was ist der einfachste Weg, um einen asynchronen Serviceanruf zu tätigen? Mein Manager möchte jQuery nicht standardmäßig verwenden, da es bei 80k ziemlich groß ist. Der Async-Aufruf muss in ie8 funktionieren. Wie schwer ist das in normalen js? Oder gibt es eine Untermenge von jQuery oder eine andere bewährte kleine spezialisierte js lib, die gut zu dem passt, wonach ich suche?Was ist der einfachste Weg, um einen asynchronen Service-Aufruf in js zu machen?
Antwort
ich so verwenden tinyxhr in Fällen haben, es zu versuchen (Ich bin nicht der Autor!)
Was ist mit einer einfachen Ebene Javascript Anfrage wie diese erhalten?
var request = new XMLHttpRequest();
request.open('GET', '/my/url', true);
request.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status >= 200 && this.status < 400) {
// Success!
var resp = this.responseText;
} else {
// Error :(
}
}
};
request.send();
request = null;
Ich habe mir das nur angesehen, es benötigt IE9 +; das ist der Fall. :) –
@AdamAzad Nein, tut es nicht. Ich habe dir die IE8 + Version gezeigt. Auf der Seite können Sie auswählen, welchen (ie) -Browser Sie mindestens unterstützen müssen und das ist die IE8-Version. – MattDiMu
Es ist ziemlich einfach. Sie können diesen Beispielcode hier verwenden, aber beachten Sie. Es skaliert nicht! Asynchrones Programmieren wird sehr schnell sehr komplex. Wenn Sie zwei oder drei asynchrone Anrufe haben, die sich vermischen (auf der Datenebene des Servers stören), denken Sie besser zweimal darüber nach, was Sie tun.
Möglicherweise möchten Sie eine asynchrone Jobwarteschlange auf dem Client haben, so dass Aufrufe noch asynchron sind, aber in der richtigen Reihenfolge ausgeführt werden. Dies geschieht am besten mit Versprechungen.
Dies ist ein Beispiel AJAX-Aufruf:
function send(data, callback)
{
var xhr;
xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhttp.status === 200)
{
callback(xhr.responseText);
}
};
xhr.open("GET", "http://..../route/to/your/service/port", true);
xhr.send();
}
Verwenden Sie es auf der Callback-Funktion, wie dies, indem man:
send({ "hello": "world" }, function (response) {
document.getElementById("response").innerText = response;
});
Wie wäre es 'callback.apply (this, arguments)' zu übergeben, was OP will, :) und zu prüfen, ob die Art des Rückrufs eine Funktion ist? –
einfacher ist besser. Wenn das nur sein Code ist, wird Callback eine Funktion sein (warum würde er sich verletzen?). Wenn es Framework-Code ist, den andere dann konsumieren, dann tue besser alle notwendigen Prüfungen. – pid
@pid Danke für den Beispielcode und warnt vor Skalierbarkeit. Hier ist der Hauptanwendungsfall: Ich entwickle eine js-Framework-Komponente, um Warnungen anzuzeigen. Diese Komponente ruft beim Laden der Seite einen Benachrichtigungsdienst auf, um nach neuen Benachrichtigungen zu suchen. verschiedene Entwickler werden einen Verweis auf diese js-Komponente auf ihren Websites hinzufügen. Dieser Dienst wird asynchron und unabhängig einmal pro Seite geladen. Daher sollten Komplexität und Skalierbarkeit bei der Verwendung nativer xhr keine Rolle spielen, richtig? – user6604655
Es gibt viele JavaScript Mikro Bibliotheken XHR Funktionalität gewidmet, aber wenn Sie sind an jQuery gewöhnt und mögen es, können Sie einfach Ihre eigenen Build erstellen und andere Module ausschließen, die Sie nicht benötigen (das wird natürlich seine Größe erheblich reduzieren):
https://github.com/jquery/jquery#modules
Auch können Sie diese Website verwenden für Ihre eigene benutzerdefinierte Version Aufbau:
http://projects.jga.me/jquery-builder/
Das GZip Ergebnis für Sie um 17Kb sein würde.
- 1. Was ist der einfachste Weg, Einstellungsdateien in Java zu machen?
- 2. Was ist der einfachste Weg, um SUMPRODUCT
- 3. Was ist der Django-Weg, um einen Subselect zu machen?
- 4. Was ist der einfachste Weg, einen Webservice zu klonen?
- 5. Was ist der einfachste Weg, um MNS-Schema zu aktualisieren?
- 6. Was ist der einfachste Weg, um mit TensorFlow zu beginnen?
- 7. Was ist der einfachste Weg, um Java-Objekte zu erhalten?
- 8. Was ist der einfachste Weg, um eine HTTP-GET-Anfrage in Perl zu machen?
- 9. In Django, was ist der einfachste Weg, nur den Autor bearbeiten/entfernen einen Beitrag zu machen?
- 10. Was ist der einfachste Weg, um einen leeren Iterable mit Ausbeute in Python zu erstellen?
- 11. In R, was ist der einfachste Weg, um einen Vektor zu einem Einheitsvektor zu skalieren?
- 12. Der einfachste Weg, um einen Crash in Swift zu erzwingen
- 13. Was ist der einfachste Weg, um eine optionale C-Erweiterung für ein Python-Paket zu machen?
- 14. Was ist der einfachste Weg, um Objekt-Detektor auf C++ mit Fast/Faster-RCNN zu machen?
- 15. Was ist der einfachste Weg, um eine Polynomregression mit sklearn zu machen?
- 16. Was ist der einfachste Weg, um ActiveX zu etwas kompatibel in allen Browsern zu konvertieren
- 17. Was ist der einfachste Weg, eine Koordinatenliste zu erstellen?
- 18. Was ist der effiziente Weg, um ein Berechtigungssystem zu machen?
- 19. Was ist der einfachste und effizienteste Weg, um einen minimalen Heap in Scala zu erstellen?
- 20. Was ist der einfachste Weg, um diese Daten in einen Pandas Dataframe zu bekommen?
- 21. Was ist der einfachste Weg, um einen Ordner voller PNG-Bilder in ein Videoformat zu konvertieren?
- 22. Was ist der einfachste Weg, um eine Subdomain in Rails auf einen bestimmten Controller zu verweisen?
- 23. Was ist der beste Weg, um einen Code-Review mit Subversion (SVN) zu machen?
- 24. Was ist der einfachste Weg, um Liniensegmente zu zeichnen, um die Ausgabe eines Algorithmus zu visualisieren?
- 25. Was ist der einfachste Weg in Java zu tun?
- 26. Was ist der einfachste Weg, XML in C++ zu generieren?
- 27. Was ist der einfachste Weg, um einen Ausdruck in Scala zu verwenden, um einen AST zu erhalten?
- 28. Was ist der geeignete Weg, um einen asynchronen Fehler innerhalb eines Versprechens zu behandeln?
- 29. Was ist der einfachste Weg, um ERRORLEVEL auf Null zurückzusetzen?
- 30. Was ist der einfachste Weg, um einen JSON-String in einen Javabean umzuwandeln?
Werfen Sie einen Blick auf [reqwest] (https://github.com/ded/reqwest). –