Uczę się kanciastego i Maszynopisu.Jak zaimplementować Asynchroniczny skrypt opisowy: Gdzie jest Obietnica
Mam CustomerService w tej usłudze Mam metodę, którą chcę zwrócić szereg klientów z usługi RESTfull.
Początkowo tworzę GetCustomers funkcję tak:
public GetCustomers(): Dtos.ICustomer[] {
var _customers: Dtos.ICustomer[];
this._httpService.get('http://localhost/myTestApi/api/customers/')
.success(function (data) {
_customers = data as Dtos.ICustomer[];
}).error(function (error) {
console.log(error);
});
return _customers;
}
Funkcja ta ostatecznie dostaje klientów, ale oczywiście powróci _customers przed HTTPService faktycznie pobiera dane.
W tym momencie pomyślałem, że mógłbym skorzystać z asynchronicznej/czekania na maszynie do pisania i to jest, kiedy kończę bałagan.
Chciałem napisać funkcję tak:
public async GetCustomers(): Dtos.ICustomer[] {
var _customers: Dtos.ICustomer[];
await this._httpService.get('http://localhost/myTestApi/api/customers/')
.success(function (data) {
_customers = data as Dtos.ICustomer[];
}).error(function (error) {
console.log(error);
});
return _customers;
}
razu uzyskać ten błąd: Error TS1055 typu „Dtos.ICustomer []” nie jest prawidłowym typem asynchroniczny powrót funkcji.
Znalazłem to Async/Await , simple example (typescript)
jednak używa obiektu obietnicy powrotu nowy Obietnica
Gdybym próbować ponownie napisać GetCustomers metoda podpis tak:
public async GetCustomers(): Promise<Dtos.ICustomer[]> {}
I get i błąd :
Nie można znaleźć nazwy "Obietnica"
Czy muszę zaimportować coś, aby otrzymać obietnicę?
Możliwy duplikat [Async/czekają, prosty przykład (maszynopis)] (http://stackoverflow.com/questions/32401741/async-await-simple-example-typescript) –
Tak widziałem to, ale na mój koniec Obietnicy nie istnieje? Wydaje się, że maszynopis nie wie nic o obietnicy. jeśli zmienię podpis metody na publiczny async GetCustomers(): Obiecuję {...} Pojawia się błąd z informacją "Nie mogę znaleźć nazwy" Obietnica ") –
John
To z pewnością powoduje, że twoje pytanie jest inne z połączonego, edytuj go, aby uwzględnić te informacje: –