2013-10-06 89 views
1

在C#中你有等待语句。处理异步请求。 我正在使用typscript,因为我发现它真的很难与javascript一起工作什么是最好的方式来处理异步请求

现在,当使用打字稿我不知道处理帖子时处理请求的方式是什么。

什么是最好的处理方法。

+2

答:使用承诺。 – SLaks

+0

用jQuery来做。 –

+0

Typescript不会为Web浏览器平台添加功能。你需要编写代码来处理它使用你最喜欢的“异步”平台。如果您使用的是jQuery(就像您标记的那样),那么只需使用jQuery.Ajax进行异步请求即可。这很简单。 – WiredPrairie

回答

2

两者async关键字(1.7)和所述向后编译为的ECMAScript 6(2.0)计划在打字原稿。同时,Q和RSVP都遵循Promises/A +标准 - 并且都可以从Definitely Typed获得类型。

在深度

没有为introducing the async keyword to TypeScript的建议。

此功能预定为TypeScript 1.7(不保证)的一部分。

真的好消息是,有,实际上,是一个反向编译为ES5(这是计划为TypeScript 2.0)。这不是TypeScript所做的唯一向后编译,所以不要太注意那些说TypeScript不向JavaScript添加任何内容的人 - 除了类型外 - 有许多ECMAScript 6功能已经可用或已计划的填充,用于例如(但不限于):

  • import * from 'module';
  • let
  • 发电机
  • 异步/承诺
  • 解构

现在,在TypeScript 1.7中,甚至有偶尔的ECMAScript 7功能登陆路线图。

4

TypeScript不提供JavaScript的新功能,它“仅仅”引入了输入。因此,您需要了解不同的JavaScript库如何处理异步请求,选择您的喜好并引用相应的定义文件。

对于第一部分,我假设您使用的是jQuery(因为您的问题也是同样标记的)。在jQuery中,异步请求由promises处理。我建议阅读文档并在网上寻找关于如何使用它们的其他教程。我将在下面提供一个TypeScript示例。

在您选择使用哪个JavaScript库之后,您需要一个TypeScript定义文件(*.d.ts)。基本上这相当于一个C头文件。定义文件将告诉TypeScript编译器存在范围,变量和方法,而不必提供TypeScript实现。在jQuery定义文件的情况下,它会告诉编译器有一个名为$的作用域以及在该作用域上定义的所有变量和方法。一个社会维护的定义文件存储库可以在here找到。它还包含有关如何引用项目中的文件的文档。

最后,您需要在TypeScript代码中使用承诺,下面的代码示例。

$.post("http://www.hateverurl.dom", options).done(() => { 
    // the POST request has finished succesfully when this method is invoked. 
}) 
+2

如果TypeScript实现'async/await'支持,那将会很棒。毕竟,它只是状态机对象周围的语法糖,JavaScript已经为此做好了所有的准备。实际上,[正在讨论](http://typescript.codeplex.com/discussions/438647)。 – Noseratio

+0

@Noseratio,感谢您的领导! – thomaux

相关问题