Verstehen, wie Winkelmesser Versprechen nutzen

Im Wesentlichen spiele ich damit herum, eine Bibliothek für die Voraussetzungen einzurichten (denke an die Benutzererstellung). Als Winkelmesser ist versprechensbasiert undmagisch erledigt die ganze Verpackung, um die Dinge in Ordnung zu halten, Ich dachte daran, Versprechen für diesen Zweck zu verwenden. Ich habe ein wenig Beispielcode geschrieben, kann aber das beobachtete Verhalten nicht erklären, sodass mir vielleicht jemand helfen kann, zu verstehen, was los ist.

function timeout(ms) {
    var promise = protractor.promise.defer();
    setTimeout(function() {
        console.log('qwer');
        promise.fulfill(true);
    }, ms);
    return promise.promise;
}

So gibt die Funktion jetzt ein Versprechen zurück, von dem ich annehme, dass es genauso inline verwendbar ist (da der gesamte Code angeblich in einen Kontrollfluss eingebunden wird)

describe('test', function() {
  it('bla', function() {
    browser.get('/');
    timeout(5000);
    $('some-element').click();
  });
});

Dies funktioniert jedoch nicht wie erwartet (d. h. die Datei console.log wird niemals ausgeführt). Sogar wennexpectas Ergebnis dieses Versprechens ändert nichts an den Ergebnissen. Wenn tatsächlich explizit darauf gewartet wird, indem Sie @ ttimeout(5000).then(done), das Zeitlimit ist abgelaufen, aber die nächste Aktion wird nach dieser Aktion nicht in die Warteschlange gestellt (d. h. die Site wird geöffnet, das Element angeklickt, und nach 5 Sekunden wird das Protokoll nach dem Zeitlimit erstellt).

So bin ich wirklich verwirrt, wie die Behauptungen, einen Kontrollfluss zu verwenden, um sicherzustellen, dass alles in der richtigen Reihenfolge ausgeführt wird und das beobachtete Verhalten zusammen passt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage