我正在尝试学习Typescript,我正在按照本页面上的教程进行操作:https://www.typescriptlang.org/docs/handbook/functions.html .当我创建文件cardPicker.ts并粘贴以下代码时,它将无法编译.我得到这个错误5次:打字稿错误TS1005:';' 预期.第1,6,7,14和15行.我看不到分号丢失的位置,但错误信息可能意味着其他内容.我担心我的ts版本,但我刚刚在两周前安装了它.当我做"tsc -version"时,它说1.0.3.0
let deck = {
suits: ["hearts", "spades", "clubs", "diamonds"],
cards: Array(52),
createCardPicker: function() {
return function() {
let pickedCard = Math.floor(Math.random() * 52);
let pickedSuit = Math.floor(pickedCard / 13);
return {suit: this.suits[pickedSuit], card: pickedCard % 13};
}
}
}
let cardPicker = deck.createCardPicker();
let pickedCard = cardPicker();
alert("card: " + pickedCard.card + " of " + pickedCard.suit);
Run Code Online (Sandbox Code Playgroud)
我通过在命令行中运行"tsc cardPicker.ts"来编译项目.
我知道有人问过类似的问题,但我正在努力解决 .net 中异步编程的概念。作为一名 Web 开发人员,我了解异步调用函数不会导致 UI 阻塞,并且您可以执行其他操作。但现在我在另一边,编写一个 C# Web API 服务来从数据库中检索信息并进行一些计算。我通过将 async 关键字添加到函数头来使控制器中的函数异步,我天真地认为这将是它的结束,但后来它告诉我需要在函数中使用 wait 关键字。所以我想出了如何做到这一点(到目前为止我已经读了很多书),但我不明白为什么我需要这样做,以及何时这样做。就像我有一个像下面这样的网络方法,它调用另外两个函数,但只有一个是用await调用的。那不好吗?它只会在部分时间是非阻塞的吗?然后我做了另一个没有await关键字的测试函数,它工作得很好(底部代码)。
\n\n[HttpPost]\npublic\xc2\xa0async\xc2\xa0Task<IHttpActionResult>\xc2\xa0CalculateBMIAsync([FromBody]MeasureInput\xc2\xa0patientData)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0{\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0string\xc2\xa0results\xc2\xa0=\xc2\xa0String.Empty;\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0MeasureReturn\xc2\xa0returnVal\xc2\xa0=\xc2\xa0null;\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0try\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0{\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0string\xc2\xa0msgInvalid\xc2\xa0=\xc2\xa0await\xc2\xa0Translators.validatePatMonthXML(patientData);\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0if\xc2\xa0(String.IsNullOrEmpty(msgInvalid))\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0{\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0results\xc2\xa0=\xc2\xa0await\xc2\xa0measureProcessor.CalculateBMI(patientData);\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 }\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0else\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\xc2\xa0new\xc2\xa0BadRequestWithInfoResult(Translators.CreateErrorXML(new\xc2\xa0Exception(msgInvalid)));\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0catch\xc2\xa0(Exception\xc2\xa0ex)\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0{\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\xc2\xa0new\xc2\xa0BadRequestWithInfoResult(Translators.CreateErrorXML(ex));\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\n\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0return\xc2\xa0Ok<MeasureReturn>(returnVal);\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0}\nRun Code Online (Sandbox Code Playgroud)\n\n使用 jquery 调用时异步工作的示例 Web API 方法(此处未使用等待):
\n\n[HttpPost]\npublic async Task<IHttpActionResult> CalculateTest()\n{ \n\n long d = 0;\n for (long i = 0; i < 2000000000; i++)\n {\n d = i;\n }\n\n string returnVal = d.ToString();\n\n return Ok(returnVal);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n调用代码:
\n\n $('#btn1').click(function () {\n console.log('Ajax request');\n $.ajax({\n url: 'http://localhost:53312/api/Measures/CalculateTest',\n type: 'POST',\n success: function (data) {\n $('#result1').html('async request finished');\n }\n })\n });\nRun Code Online (Sandbox Code Playgroud)\n