Оператор await
использует обещания ES6, которые не интегрированы в платформу AngularJS и ее цикл дайджеста.
Преобразование обещаний в обещания AngularJS с $q.when
и исключение оператора await
:
const startBtn = ".button-selector";
var p1 = $q.when(page.waitFor(startBtn));
var p2 = p1.then(function() {
return $q.when(page.click(startBtn));
});
var p3 = p2.then(function() {
return $q.when(page.waitForNavigation());
});
var p4 = p3.then(function() {
return $q.when(page.waitForSelector(".new-selector"));
});
return p4;
Метод $ q.when оборачивает объект, который может быть значением или обещанием (которое может быть третье лицо), в обещание $ q .Это полезно, когда вы имеете дело с объектом, который может или не может быть обещанием, или если обещание исходит из источника, которому нельзя доверять.
Метод .then
обещания AngularJS - этоинтегрирована с фреймворком AngularJS и его циклом дайджеста.AngularJS изменяет обычный поток JavaScript, предоставляя собственный цикл обработки событий.Это разбивает JavaScript на классический и AngularJS контекст выполнения.Только операции, которые применяются в контексте выполнения AngularJS, выиграют от привязки данных AngularJS, обработки исключений, отслеживания свойств и т. Д.