q
library ha questa caratteristica pulito per risolvere e diffondere molteplici promesse in argomenti distinti:Diffondere promesse goniometro
Se si dispone di una promessa per una matrice, è possibile utilizzare diffondersi come un sostituto per allora. La funzione spread "diffonde" i valori su gli argomenti del gestore di evasione ordini.
return getUsername()
.then(function (username) {
return [username, getUser(username)];
})
.spread(function (username, user) {
});
In goniometro, stiamo cercando di utilizzare il built-in protractor.promise
provenienti da WebDriverJS
.
la domanda:
E 'possibile avere la funzionalità "spread" con protractor.promise
?
Esempio caso d'uso:
Abbiamo implementato un matcher gelsomino personalizzato per check if an element is focused. Qui dobbiamo risolvere due promesse prima di fare un confronto di uguaglianza. Attualmente, stiamo usando protractor.promise.all()
e then()
:
protractor.promise.all([
elm.getId(),
browser.driver.switchTo().activeElement().getId()
]).then(function (values) {
jasmine.matchersUtil.equals(values[0], values[1]);
});
che idealmente ci piacerebbe avere in uno stato più leggibile:
protractor.promise.all([
elm.getId(),
browser.driver.switchTo().activeElement().getId()
]).spread(function (currentElementID, activeElementID) {
return jasmine.matchersUtil.equals(currentElementID, activeElementID);
})
Come ti aspetti che ciò accada se queste sono due librerie diverse? A meno che la promessa di WebDriverJS non sia racchiusa in Q o Bluebird, non è possibile _getare la funzionalità_ di un'altra libreria –
@KirillSlatin, ecco cosa sto chiedendo in realtà. Come possiamo estendere il 'protractor.promise' ed è fattibile? Inoltre, non l'ho ancora provato, ma cosa succede se sostituiamo 'protractor.promise' con' q' al volo, in che modo influenzerebbe l'esecuzione del test del goniometro ecc. – alecxe
hmm, che potrebbe avere senso sostituire il motore di promessa dal principio. Ho pensato di avvolgere una specifica istanza di promessa. Qualcosa di simile a 'promisify 'di bluebird –