我对c#的异步/等待非常熟悉,并且使用打字稿一年左右,任何人都可以给一个简单的例子解释它如何在打字稿上工作? 在此先感谢,期待着找到一些帮助,实现了相同的异步/等待,简单示例(typescript)
UPDATE
这将是非常有益的,如果示例包括角/ jQuery的承诺,因为它会给实际执行的清晰视图
我对c#的异步/等待非常熟悉,并且使用打字稿一年左右,任何人都可以给一个简单的例子解释它如何在打字稿上工作? 在此先感谢,期待着找到一些帮助,实现了相同的异步/等待,简单示例(typescript)
UPDATE
这将是非常有益的,如果示例包括角/ jQuery的承诺,因为它会给实际执行的清晰视图
的关键是使用ES6 Promise或东西,实现了lib.d.ts(Read more)发现PromiseLike
和PromiseConstructorLike
接口。一个jQuery的承诺does not implement这些接口,所以它不会与此工作。
下面是使用ES6承诺一个简单的例子:
function getStringFromWebServerAsync(url: string) {
return new Promise<string>((resolve, reject) => {
// note: could be written `$.get(url).done(resolve).fail(reject);`,
// but I expanded it out for clarity
$.get(url).done((data) => {
resolve(data);
}).fail((err) => {
reject(err);
});
});
}
async function asyncExample() {
try {
let data = await getStringFromWebServerAsync("http://localhost/GetAString");
console.log(data);
}
catch (err) {
console.log(err);
}
}
asyncExample();
注意,含await
语句中的任何代码需要一个async
函数中,所以我已经在一个包中的代码。
请注意,您需要在Typescript 1.7中使用异步/等待来定位ES6。具有较低的版本中,Visual Studio中输出
TS1308 'await' expression is only allowed within an async function.
和
TS1311 Async functions are only available when targeting ECMAScript 6 and higher.
有关详细信息,请参阅例如http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx
这是很好的信息,但并未真正回答问题。也许它应该是一个评论,当你有足够的声望。 –
我很了解它,但正如你所说我缺乏声誉。对不起。 – Zartag
请参阅提案:TypeScript上的异步函数https://github.com/Microsoft/TypeScript/issues/1664。另外https://smellegantcode.wordpress.com/2015/02/01/typescript-1-5-async-functions/和http://www.dotnetcurry.com/javascript/1131/ecmascript6-async-using-generators-承诺 –
该路线图显示async/await为2.0:https://github.com/Microsoft/TypeScript/wiki/Roadmap(截至[7月23日](https://github.com/Microsoft/TypeScript/wiki/Roadmap/ aa5e66fabe0d50ef53e6b05b3d1906a3eb40a35b)) –
MatijaGrcic和@JonSkeet双向链接,感谢评论,我已经看过这些文档,但真的很期待一个简单的实例,所以我可以将它与angularjs promise的集成 –