Was Sie nicht verstehen, ist, wie die Javascript-Compiler beschäftigt sich mit Versprechungen.
So betrachtet der Compiler Ihren Code;
1 - Alle Variablen werden am Anfang des Funktionsumfangs erstellt, unabhängig davon, wo Sie sie zuweisen.
2 - Ist die minimale Menge Arbeit für jede Zeile verfügbar und wird in die nächste Zeile verschoben.
testFromElement = {promise element object};
splittedText = {promise element object}.split(" "); (= undefined)//This what you don't want.
3 - Beginnt an der Spitze und arbeitet minimal an nicht aufgelösten Zeilen.
testFromElement = {promise getText object};
4 - Beginnt an der Spitze und arbeitet minimal an nicht aufgelösten Zeilen.
Kurz gesagt es teilt splitedText drei Schritt, bevor Sie es wollen.
Gutes Beispiel:
var splittedText;
it("should get split text", function(done) {
someElement.getText().then(function(textFromElement){
splittedText = textFromElement.split(" ");
done();
})
})
1 - Alle Variablen sind an der Oberseite des Funktionsumfang erstellt, unabhängig davon, wo Sie es zuweisen.
var splittedText; (= undefined)
2 - Nur Arbeit, bis getan innerhalb dieser Funktion getan() aufgerufen wird
it("should get split text", function(done) {
3 - Ist die minimale Menge an Arbeit kann es weg mit für jede Zeile und bewegt sich auf die nächste Linie.
4 - Beginnt an der Spitze der Funktion und arbeitet minimal an nicht aufgelösten Zeilen.
5 - Beginnt an der Spitze der Funktion und arbeitet minimal an nicht aufgelösten Zeilen.
textFromElement = "text text";
splittedText = textFromElement.split(" "); (["text","text"]);
done(); //the compiler can now to work outside this function
Mögliches Duplikat [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchronous-call) –
Nicht wirklich, da diese Frage spezifisch für die Winkelmesser-API ist – purplePanda
Werfen Sie einen Blick [hier] (https://spin.atomicobject.com/2014/12/17/asynchronous-testing-protractor-angular/) und finde den Absatz "Hinter den Kulissen von WebDriver, ...". Beachten Sie nun, wie dieser Absatz endet, "... (es sei denn, wir möchten ausdrücklich, dass das Ergebnis vom Aufruf zurückgegeben wird)". Wenn ich Ihre Absicht nicht völlig falsch interpretiere, ist dieser Vorbehalt der Schlüssel zu meiner Überzeugung, dass mein "mögliches Duplikat ..." hier angebracht ist. –