Sto imparando angolare e dattiloscritto.Come implementare il pattern di attesa astro di Typescript: dove si trova la promessa
Ho un CustomerService in questo servizio. Ho un metodo che desidero restituire a un array di clienti da un servizio RESTfull.
Inizialmente ho creato la mia funzione GetCustomers così:
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;
}
Questa funzione alla fine ottiene i clienti ma ovviamente tornerà _customers prima della HTTPService riceve effettivamente i dati.
A questo punto ho pensato di poter utilizzare Typscript async/await e questo è quando finisco in un pasticcio.
ho voluto scrivere la mia funzione come questa:
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;
}
immediatamente ottengo questo errore: Errore Tipo TS1055 'Dtos.ICustomer []' non è un tipo di funzione asincrona di ritorno valido.
ho trovato questo Async/Await , simple example (typescript)
tuttavia utilizza un oggetto di promessa: tornare nuova promessa
Se tento di ri-scrivere il mio metodo GetCustomers firma così:
public async GetCustomers(): Promise<Dtos.ICustomer[]> {}
ottengo ed errore :
Impossibile trovare il nome "Promise"
Devo importare qualcosa per ottenere una promessa?
Possibile duplicato di [Async/Await, semplice esempio (dattiloscritto)] (http://stackoverflow.com/questions/32401741/async-await-simple-example-typescript) –
Sì, l'ho visto ma sul mio fine Promise non esiste? Il dattiloscritto sembra non sapere nulla su Promise. se cambio la mia firma del metodo su pubblico asCronico GetCustomers(): Promise {...} Viene visualizzato un messaggio di errore "Impossibile trovare il nome 'Promise') –
John
Beh, questo sicuramente rende la tua domanda diversa da quello collegato, per favore modificalo per includere questa informazione –