我正在學習angular和Typescript。如何實現Typescript異步等待模式:Promise
我在這個服務中有一個CustomerService我有一個方法,我希望從RESTfull服務返回一個客戶數組。
起初我創造了我GetCustomers的功能這樣的:
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;
}
此功能,最終得到客戶,但顯然的HTTPService實際上得到的數據之前,將返回_customers。
在這一點上,我想我可以使用Typscript異步/等待,這是當我結束了一團糟。
我想寫我的功能是這樣的:
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;
}
我立即得到這個錯誤:錯誤TS1055類型「Dtos.ICustomer []」不是有效的異步函數的返回類型。
我發現這個Async/Await , simple example (typescript)
但是它使用的是無極對象:返回新承諾
如果我試圖由此重新寫我GetCustomers的方法簽名:
public async GetCustomers(): Promise<Dtos.ICustomer[]> {}
我得到的和錯誤:
找不到名字'Promise'
我需要導入一些東西來獲得承諾嗎?
可能重複[Async/Await,簡單示例(typescript)](http://stackoverflow.com/questions/32401741/async-await-simple-example-typescript) –
是的,我看到了,但在我的結束Promise不存在? Typescript似乎對Promise一無所知。 如果我改變我的方法簽名公共異步GetCustomers的():無極 {...} 我得到一個錯誤說「無法找到名爲‘無極’) –
John
嗯,這肯定不會讓你的問題不同從鏈接之一,請編輯包含此信息。 –