2017-05-13 5 views
-1

Ich verwende TypScript 2.3.2 in Visual Studio Code und ich bin ziemlich neu. Ich verwende es, um einen Front-End-Client für ein SharePoint-Backend zu erstellen. Es gibt ein SharePoint jQuery pluging namens SPServices(), mit dem ich ein JSON-Objekt von einem Aufruf erhalten kann und die Methode gibt ein $ .Defered() -Objekt zurück. Die SPServices Logik ruft resolveWith() und übergibt sie die Ergebnisse aus der Sharepoint-Abfrage, die wie folgt aussieht:TypeScript jQuery Versprechen nicht übergeben Auflösungsparameter

var thisResult = { 
     changeToken: newChangeToken, 
     mapping: thisListJsonMapping, 
     data: jsonData, 
     deletedIds: deletedIds 
    }; 

result.resolveWith(thisResult); 

Hier ist mein Code die Auflösung für den Umgang:

$.when(promise) 
    .then(res => { 
     let me = this; 
     debugger; 
    }); 

Dies ist nach mehreren Iterationen Code-Versuche. "res" wird niemals zugewiesen und der Kontext dafür in Typoskript ist die Klasse, die ich sehe, wenn ich in Chrome auf den Haltepunkt klicke. In der Konsole, wenn ich "dies" überprüfe, sehe ich das Objekt früher an die resolveWith() übergeben.

Alle Tutorials, die ich gesehen haben, sagen, dass res sollte in „thisResults“ dass JSON-Objekt zugewiesen werden. Irgendeine Idee, was falsch ist und warum das nicht stimmt?

EDIT: Nach der Arbeit mit der Antwort unten ging ich für einige zusätzliche Tests zurück, jetzt, wo ich einen Fallback-Plan hatte. Wenn ich die SPServices-Bibliothek bearbeite und sie in result.resolve(thisResult); anstelle von resolveWith(thisResult); ändere, wird das Objekt ordnungsgemäß an das Lambda zurückgegeben.

+0

Woher kommen "Ergebnis" und "Versprechen"? Sollten sie nicht gleich sein? Ich denke, es sollte etwas wie '$ .when (result) .then (reply => ...)' sein. – Granga

Antwort

4

Wenn Sie möchten, dass dies der aufrufende Kontext ist, sollten Sie die Pfeilfunktion nicht verwenden. Dies ist der Fall bei Callbacks, die von Bibliotheken wie jQuery, Unterstrichen usw. verwendet werden. Sie sollten wahrscheinlich nur eine Funktion anstelle eines dicken Pfeils verwenden.

+0

Es ist seltsam, dass die Dokumentation für Typoskript-Zeug, die ich gesehen habe, fett Pfeil zeigt, um das Auflösung-Objekt zu erhalten, aber mindestens zu einer Funktion wechseln gibt "das" den Kontext, den ich für den TS noch kompilieren muss. – SenseiHitokiri

Verwandte Themen