У меня есть следующий код (Angular 6), который работает при преобразовании обещаний в наблюдаемые и использовании распространения pipe и map / switchMap:
import { Observable, of, from as observableFrom } from 'rxjs';
public initialise(): Observable<boolean> {
return observableFrom(SomeExternalSDK()).pipe( // where SomeExternalSDK() is a promise
map(response => {
this.lib = response;
}),
switchMap(() => this.lib.CreateMyTable()), // CreateMyTable() is a promise
switchMap(() => this.lib.UpdateData()), // UpdateData() is a promise
map(() => {
console.log('initialised!!');
return true;
}),
catchError(error => {
console.log('error: ' + error);
return of (false);
})
);
}
Но, пытаясь лучше понять async / await, я хотелчтобы преобразовать это в:
public initialise(): Observable<boolean> {
const doInit = async () => {
try {
this.lib = await SomeExternalSDK(); // errors out on this line.
await this.lib.CreateMyTable();
await this.lib.UpdateData();
console.log('initialised!!');
return true;
} catch (error) {
console.log(error);
return false;
}
};
return observableFrom(doInit());
}
, но при запуске кода при вызове await SomeExternalSDK () кажется, что это вызывает ошибку, которая не перехватывается при попытке / ловить, и я неполучить что-нибудь полезное обратно в консоль.Есть ли что-то очевидное, что я делаю не так здесь?Я не привык ждать / асинхронно в машинописи, поэтому просто пытаюсь разобраться с этим.