Questions tagged «asynchronous»

异步编程是一种用于延迟具有高延迟或低优先级的操作的策略,通常是为了提高软件的性能,响应能力和/或可组合性。通常使用事件驱动的编程和回调的某种组合来采用此类策略,并且可以选择通过协程和/或线程并发使用。

8
等待直到带有异步网络请求的swift for loop完成执行
我希望for in循环向Firebase发送一堆网络请求,然后在该方法完成执行后将数据传递给新的视图控制器。这是我的代码: var datesArray = [String: AnyObject]() for key in locationsArray { let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)") ref.observeSingleEventOfType(.Value, withBlock: { snapshot in datesArray["\(key.0)"] = snapshot.value }) } // Segue to new view controller here and pass datesArray once it is complete 我有几个问题。首先,如何等待for循环完成并且所有网络请求完成?我无法修改observeSingleEventOfType函数,它是firebase SDK的一部分。另外,我是否会尝试通过for循环的不同迭代(有意义的希望)访问datesArray来创建某种竞争条件?我一直在阅读有关GCD和NSOperation的文章,但由于这是我开发的第一个应用程序,我有点迷茫。 注意:Locations数组是包含我需要在firebase中访问的键的数组。同样,重要的是异步触发网络请求。我只想等待所有异步请求完成,然后再将datesArray传递给下一个视图控制器。

6
在ASP.NET MVC中执行异步操作使用.NET 4上ThreadPool中的线程
提出这个问题后,在ASP.NET MVC中使用异步操作时,我感到很舒服。因此,我就此写了两篇博客文章: 我对C#5.0和ASP.NET MVC Web应用程序中基于任务的异步编程的看法 ASP.NET MVC 4中使用基于任务的异步编程模型(TAP)进行异步数据库调用 我对ASP.NET MVC上的异步操作有太多误解。 我总是听到这句话:如果操作异步运行,应用程序可以更好地扩展 我也经常听到这样的句子:如果您的流量很大,最好不要异步执行查询-消耗2个额外的线程来为一个请求服务会占用其他传入请求的资源。 我认为这两个句子不一致。 我没有太多有关线程池如何在ASP.NET上工作的信息,但是我知道线程池的线程大小有限。因此,第二句话必须与此问题相关。 而且我想知道ASP.NET MVC中的异步操作是否使用.NET 4上ThreadPool的线程? 例如,当我们实现AsyncController时,应用程序如何结构?如果流量很大,实现AsyncController是个好主意吗? 有没有人可以把这个黑色的窗帘拉开,向我解释有关ASP.NET MVC 3(NET 4)异步的问题? 编辑: 我已经阅读了近百次以下文档,并且我了解主要交易,但是我仍然感到困惑,因为那里有太多不一致的评论。 在ASP.NET MVC中使用异步控制器 编辑: 假设我有如下所示的控制器动作(AsyncController虽然不是实现): public ViewResult Index() { Task.Factory.StartNew(() => { //Do an advanced looging here which takes a while }); return View(); } 如您在此处看到的,我执行了一项操作,却忘记了它。然后,我立即返回而无需等待它完成。 在这种情况下,这是否必须使用线程池中的线程?如果是这样,则在完成后,该线程将如何处理?GC完成后是否进来并进行清理? …

16
可以异步调用jdbc吗?
我想知道是否有一种方法可以对数据库进行异步调用吗? 例如,假设我有一个很大的请求,需要很长时间来处理,我想发送请求并在请求将返回值时(通过传递侦听器/回调等)接收通知。我不想阻止等待数据库答复。 我不认为使用线程池是一种解决方案,因为它无法扩展,在大量并发请求的情况下,这会产生大量线程。 我们正面临着网络服务器的此类问题,并且已经找到解决方案,方法是使用select / poll / epoll系统调用来避免每个连接只有一个线程。我只是想知道如何在数据库请求中具有类似的功能? 注意:我知道使用FixedThreadPool可能是一个不错的解决方法,但令我惊讶的是,没有人开发出真正异步的系统(无需使用额外的线程)。 **更新** 由于缺少实际可行的解决方案,我决定自己创建一个库(finagle的一部分):finagle-mysql。它基本上解码/解码mysql请求/响应,并在后台使用Finagle / Netty。即使有大量连接,它的扩展性也非常好。

23
如何避免在Node.js中长时间嵌套异步函数
我想制作一个页面来显示数据库中的某些数据,因此我创建了一些函数来从数据库中获取数据。我只是Node.js中的新手,据我了解,如果我想在一个页面中使用它们(HTTP响应),则必须将它们全部嵌套: http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); var html = "<h1>Demo page</h1>"; getSomeDate(client, function(someData) { html += "<p>"+ someData +"</p>"; getSomeOtherDate(client, function(someOtherData) { html += "<p>"+ someOtherData +"</p>"; getMoreData(client, function(moreData) { html += "<p>"+ moreData +"</p>"; res.write(html); res.end(); }); }); }); 如果有很多类似的功能,那么嵌套就会成为问题。 有办法避免这种情况吗?我想这与如何组合多个异步函数有关,这似乎是基本的东西。

7
实现C#通用超时
我正在寻找实现通用方法以使单行(或匿名委托)代码超时执行的好主意。 TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min 我正在寻找一种可以在我的代码与气质代码进行交互的许多地方优雅地实现的解决方案(我无法更改)。 另外,如果可能的话,我想阻止令人讨厌的“超时”代码进一步执行。



6
等待无效的异步方法
我如何等待一种void async方法完成工作? 例如,我有如下功能: async void LoadBlahBlah() { await blah(); ... } 现在,我想确保所有内容都已加载,然后再继续其他操作。
155 c#  asynchronous 

11
我应该如何调用3个函数才能一个接一个地执行它们?
如果我需要一个接一个地调用此函数, $('#art1').animate({'width':'1000px'},1000); $('#art2').animate({'width':'1000px'},1000); $('#art3').animate({'width':'1000px'},1000); 我知道在jQuery中我可以做类似的事情: $('#art1').animate({'width':'1000px'},1000,'linear',function(){ $('#art2').animate({'width':'1000px'},1000,'linear',function(){ $('#art3').animate({'width':'1000px'},1000); }); }); 但是,假设我没有使用jQuery,而是要调用: some_3secs_function(some_value); some_5secs_function(some_value); some_8secs_function(some_value); 我应该如何调用此函数以便执行some_3secs_function,然后在调用结束后执行,然后执行,然后在some_5secs_function调用结束后再调用some_8secs_function? 更新: 这仍然无法正常工作: (function(callback){ $('#art1').animate({'width':'1000px'},1000); callback(); })((function(callback2){ $('#art2').animate({'width':'1000px'},1000); callback2(); })(function(){ $('#art3').animate({'width':'1000px'},1000); })); 三个动画同时开始 我的错误在哪里?

17
反应-在渲染DOM时显示加载屏幕吗?
这是来自Google Adsense应用程序页面的示例。在主页之前显示的加载屏幕在之后显示。 我不知道如何使用React来做同样的事情,因为如果我使加载屏幕由React组件呈现,它不会在页面加载时显示,因为它必须等待DOM呈现。 更新时间: 我通过将屏幕加载程序放入index.html并在React componentDidMount()生命周期方法中将其删除来举例说明了我的方法。 示例和react-loading-screen。

7
Node.js package.json主要参数
我已经做了很多搜索。但是,仍然对Node.js的package.json中的主要参数有疑问。 填写该字段有什么帮助?用另一种方式问,如果此字段出现,是否可以以其他样式启动模块? 我可以在主要参数中填写多个脚本吗?如果是,它们是否将作为两个线程启动?如果没有,如何在模块中启动两个脚本并使它们并行运行? 我知道第二个问题很奇怪。这是因为我在OpenShift上托管了Node.js应用程序,但是该应用程序包含两个主要组件。一种是REST API,一种是通知传递服务。 我担心如果将通知API实施为单个线程,则通知传递过程将阻止REST API。但是,它们必须连接到相同的MongoDB卡式盒。此外,如果可能的话,两个组件都可以在同一个齿轮中使用,我想节省一个齿轮。 欢迎任何建议。

15
异步运行PHP任务
我在一个比较大的Web应用程序上工作,后端主要使用PHP。代码中有几个地方需要完成一些任务,但是我不想让用户等待结果。例如,在创建新帐户时,我需要向他们发送欢迎电子邮件。但是当他们按下“完成注册”按钮时,我不想让他们等到实际发送电子邮件之后,我只想开始该过程,并立即向用户返回一条消息。 到目前为止,在某些地方,我一直在使用exec()感觉像是被黑客入侵。基本上是这样的: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); 这似乎可行,但我想知道是否有更好的方法。我正在考虑编写一个在MySQL表中排队任务的系统,以及一个单独的长期运行的PHP脚本,该脚本每秒查询一次该表,并执行它发现的所有新任务。如果将来需要的话,这还具有让我将来在几台工作机之间分配任务的优势。 我在重新发明轮子吗?有没有比exec()hack或MySQL队列更好的解决方案?

12
如何在Javascript中创建异步函数?
查看此代码: <a href="#" id="link">Link</a> <span>Moving</span> $('#link').click(function () { console.log("Enter"); $('#link').animate({ width: 200 }, 2000, function() { console.log("finished"); }); console.log("Exit"); }); 正如您在控制台中看到的那样,“动画”功能是异步的,它“分叉”了事件处理程序块代码的流程。事实上 : $('#link').click(function () { console.log("Enter"); asyncFunct(); console.log("Exit"); }); function asyncFunct() { console.log("finished"); } 遵循块代码的流程! 如果我希望function asyncFunct() { }以此行为创建自己的代码,该如何使用javascript / jquery进行创建?我认为这是不使用的策略 setTimeout()


2
实体框架异步操作需要十倍的时间才能完成
我有一个使用Entity Framework 6处理数据库的MVC站点,并且我一直在尝试对其进行更改,以使所有内容都作为异步控制器运行,并且对数据库的调用作为它们的异步对应对象(例如ToListAsync()而不是ToList()) 我遇到的问题是,仅将查询更改为异步已使它们的运行速度变得异常慢。 以下代码从我的数据上下文中获取“相册”对象的集合,并转换为相当简单的数据库联接: // Get the albums var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync(); 这是创建的SQL: exec sp_executesql N'SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], [Extent1].[ASIN] AS [ASIN], [Extent1].[Title] AS [Title], [Extent1].[ReleaseDate] AS [ReleaseDate], [Extent1].[AccurateDay] AS [AccurateDay], [Extent1].[AccurateMonth] AS [AccurateMonth], [Extent1].[Type] AS [Type], [Extent1].[Tracks] AS …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.