public class ControlLayer
{
protected DataLayer dal;
//constructors here
public int getInfo1(int param)
{
int ret = this.dal.getInfo1(param);
return ret;
}
public int getInfo2(int param)
{
int ret = this.dal.getInfo2(param);
return ret;
}
}
然后我有了调用webAPI的dataLayer,它看起来像这样。为了简单起见,我直接使用。result。
public class DataLayer
{
HttpClient client = new HttpClient();
string url = "";
public int getInfo1(int param1)
{
int ret=0;
HttpResponseMessage response = client.GetAsync(url).Result;
//.... do some work, get the value for ret
return ret;
}
public int getInfo2(int param1)
{
int ret = 0;
HttpResponseMessage response = client.GetAsync(url).Result;
//.... do some work, get the value for ret
return ret;
}
}
我的问题是,我看到一些教程说我们应该避免使用。result,因为它可能会导致死锁。我不确定在我的情况下是否需要使用Async/await?如果我确实需要,我知道我应该一直异步,但我确实希望我的controlLayer是同步的,因为我有其他层调用controlLayer的函数,我不希望所有层的函数都是异步的,结果是task<>,这是异步同步的情况吗?我是不是错过了什么?欢迎提出任何建议。谢了!
我确实希望我的controlLayer是同步的,因为我有其他层调用controlLayer的函数,我不希望所有层的函数都是异步的,结果是Task<>
我建议你重新考虑一下。web请求基本上是一个异步操作,因此我建议您将“控制层”公开为异步API,并允许异步
在代码库中的各个层中“增长”。
但是,如果您真的想要同步API,那么您应该只调用同步API。例如,使用WebClient
而不是HttpClient
。不要调用result
用同步API包装异步API。
我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)
我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似
我通读了Dart/flatter中的Async/Await/then,试图理解为什么aysnc函数中的Await不会等到完成后再继续。在我的UI中,有一个按钮调用一个异步方法来返回一个位置,该位置总是返回null,并且不等待函数完成。 该函数将调用推送到一个新的UI页面,该页面选择一个位置,并应返回一个结果。如何使该函数等待结果?我不是在使用异步吗?
问题内容: 我使用Node.js和TypeScript,并且使用。这是我的测试用例: 我想为整个功能设置一个超时时间。即如果要花费2秒,花费0.5秒,花费5秒,我想在3秒钟后让我抛出错误的超时。 正常调用是一个问题,因为范围丢失了: 而且我不能用普通的方式抓住它: 有关如何解决的任何想法? 问题答案: 您可以使用超时: 您必须将其包装在诺言中才能使用。
本文向大家介绍JavaScript 异步等待循环,包括了JavaScript 异步等待循环的使用技巧和注意事项,需要的朋友参考一下 示例 在循环中使用异步等待时,您可能会遇到其中一些问题。 如果您只是尝试在内部使用await forEach,则会抛出Unexpected token错误。 这是因为您错误地将箭头功能视为一个块。该await会在回调函数,这是不是上下文async。 解释器可以防止我们
问题内容: 我们如何才能在传递给事件发射器的回调中结束函数 而又不使事件发射 器 散布 ? 另外,无需使用 外部模块 ,只需使用普通的 NodeJS 7.x / 8.x (支持 Es6 语法和。 我们基本上希望将an 与事件发射器混合使用,以便在事件发射器发出信号时解析它。 另外请记住,在使用其他异步功能完成之前,我们不会从事件发射器开始。 如果我们有一个“新的Promise(…)”,我们将调用r