Ich habe diesen Code jQuery-Code-Fragment:ein jQuery Versprechen, das immer gelingt?
$.get('/api/' + currentPage).done(function(data) { ... })
.fail(...)
Ich möchte $.get('/api/'+currentPage)
mit dem Versprechen, ersetzen, die immer gelingt und gibt einen bestimmten Wert für data
. Etwas wie:
let myData = { ... } // value of data I want to pass to the done function
(new AlwaysSucceeds(myData)).done(function(data) { ... })
.fail(...)
Ich könnte ein Dummy-Objekt schustert, oder ich konnte die done
Funktion extrahieren, aber ich möchte auf ein Minimum Änderungen an den Code zu halten.
Gibt es eine Möglichkeit, dies zu tun?
UPDATE: Um zu verdeutlichen, was los ist, ist der Code, mit dem ich arbeite, (here). Normalerweise wird diese App von einem Nodejs-Server bedient, der den /api/...
-Aufruf implementiert, aber ich konvertiere es, um von einem statischen Seitenserver bedient zu werden. Ich weiß, was von der $.get
Aufruf zurückgegeben wird. Damit Änderungen an den Code sauber ich einfach zu ändern mag, die an der Leitung:
let myData = {...}
// $.get('/api/' + currentPage) -- comment out the $.get call
(SOMETHINGHERE(myData)).done(function(data) {
Der SOMETHINGHERE
Ausdruck muss implementieren .done(f)
, das die Funktion f
mit myData
anrufen und dann zurück einig Objekt, das .fail(...)
implementiert die tut nichts.
Was ist '.always()'? 'get()' ist eine Ajax-Methode, also ist es nicht unmöglich zu erwarten, dass es immer erfolgreich gemacht wird? Also .. wenn du das nicht kannst, dann könnte '' immer() 'eine Hilfe sein? – moon
Ich denke, ich könnte diese Arbeit machen. Ich würde es vorziehen, die '$ .get()' überhaupt nicht auszuführen, obwohl ich die URL zu etwas harmlosem ändern könnte. – ErikR
Sie können 'ersetzen $ .get()' mit allem, was ein Versprechen gibt, die Sie bereits mit den vorliegenden Daten ist haben. Es ist überhaupt nicht klar, welches Problem Sie eigentlich lösen wollen. Wenn Sie bereits die Daten haben, warum verwenden Sie überhaupt ein Versprechen? Das ist dann nur eine synchrone Operation. Keine Versprechen benötigt. Frage scheint mir unklar. – jfriend00