Azure 如果我让Cosmos DB V1触发函数应用程序异步,我会破坏它吗?

Azure 如果我让Cosmos DB V1触发函数应用程序异步,我会破坏它吗?,azure,azure-functions,azure-cosmosdb,Azure,Azure Functions,Azure Cosmosdb,为了使用HTTPClient并从我的azure函数应用程序Cosmos DB trigger V1发布到web服务,我必须使函数异步,这在默认情况下是不异步的 改变 public static class Function1 { [FunctionName("Function1")] public static void RunAsync([CosmosDBTrigger( 到 请注意第二个函数触发器定义中的异步部分 我需要这个,因为在后面的函数中,我

为了使用HTTPClient并从我的azure函数应用程序Cosmos DB trigger V1发布到web服务,我必须使函数异步,这在默认情况下是不异步的

改变

 public static class Function1
    {
        [FunctionName("Function1")]
        public static void RunAsync([CosmosDBTrigger(

请注意第二个函数触发器定义中的异步部分

我需要这个,因为在后面的函数中,我使用http客户机,如下所示,它必须使用wait

HttpResponseMessage response = await httpClient.PostAsync("https://XXXXX", new StringContent(transaction.ToString(), System.Text.Encoding.UTF8, "application/json"));
我是通过使触发器异步来破坏触发器,还是这是一个可接受且受支持的更改

如果没有,我如何更改我的httpCLient在触发功能应用程序中的使用


注意:代码按预期工作,我只是担心它是错误工作的,所以今天。

无需担心异步修饰符,它对Azure函数的工作方式没有影响

Azure函数确保在执行自定义代码之前检测到触发事件并填充相应的参数。async和await只能对自定义代码产生影响

比如说

Task<HttpResponseMessage> task = httpClient.PostAsync("https://XXXXX", new StringContent(transaction.ToString(), System.Text.Encoding.UTF8, "application/json"));

// Some synchronous code doesn't rely on the response
...

HttpResponseMessage response =  await task;
Task Task=httpClient.PostAsync(“https://XXXXX,新的StringContent(transaction.ToString(),System.Text.Encoding.UTF8,“application/json”);
//某些同步代码不依赖于响应
...
HttpResponseMessage响应=等待任务;
我们通常单独创建任务以利用异步。函数在等待http请求任务完成时继续执行其他代码。这就是我们所说的异步。在其他代码完成后,我们使用await来确保得到所需的响应,因为没有额外的代码可以使用


您的代码等待任务立即完成,没有异步执行的代码,因此它实际上是按照之前的顺序执行的。

使用
异步任务
而不是
异步无效
这背后有什么原因吗?原因很多,无法在注释中真正解释。查看这篇文章,你可以在谷歌上找到更多信息,如果你不需要很好的链接,请避免使用
async void
,谢谢
Task<HttpResponseMessage> task = httpClient.PostAsync("https://XXXXX", new StringContent(transaction.ToString(), System.Text.Encoding.UTF8, "application/json"));

// Some synchronous code doesn't rely on the response
...

HttpResponseMessage response =  await task;