草庐IT

异步IO

全部标签

javascript - socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件

我注意到每当我的服务器离线时,当我将其切换回在线时,它会收到大量套接字事件,这些事件是在服务器关闭时触发的。(现在已经过时的事件)。有没有办法阻止socket.io在x秒内未收到响应后重新发出事件? 最佳答案 当开源库的所有其他方法都失败时,您可以去研究代码,看看您能找出什么。在花了一些时间使用socket.io源代码之后...问题的关键似乎是这段代码here在socket.emit()中:if(this.connected){this.packet(packet);}else{this.sendBuffer.push(packet

javascript - AJAX为什么叫异步?

AJAX为什么叫异步?它是如何完成与服务器的异步通信的? 最佳答案 它是异步的,因为它不会锁定浏览器。如果您触发Ajax请求,用户仍然可以在请求等待响应时工作。当服务器返回响应时,将运行一个回调来处理它。如果需要,您可以使XMLHttpRequest同步,如果这样做,浏览器会在请求未完成时锁定(因此大多数情况下这是不合适的) 关于javascript-AJAX为什么叫异步?,我们在StackOverflow上找到一个类似的问题: https://stackov

javascript - 在 ("message"上定义 Socket.io 的最有效方法)处理程序

Socket.io的例子都遵循这个模式io.sockets.on("connection",function(mySocket){mySocket.on("mymessage",function(myData){...});});在我看来,这将为每个连接创建一个新的回调函数。假设每个套接字都以相同的方式响应消息,像这样为所有套接字定义一次处理程序是否会更节省内存:functionmyMessageHandler(data){...}io.sockets.on("connection",function(mySocket){mySocket.on("mymessage",myMessag

javascript - 如何通过构造函数异步调用注入(inject)服务,Angular 2

这就是问题所在:我有一个在构造函数中发出HTTP请求的服务:constructor(publichttp:Http,publicgeolocation:Geolocation){this.http=http;this.geolocation=geolocation;//Httprequest...thiswillsetvariableforecastoftheclasswhencomplete.this.getForecast(16);}然后我将该服务注入(inject)到这样的组件中:constructor(publicconnector:ApiConnector){this.for

javascript - 使用 socket.io 的内存泄漏

我发现当手动断开套接字时,套接字并没有在套接字io服务器端被完全破坏。我找到了thistopicongithub有用。当我在寻找一些阻止GC清理套接字的变量链接时,我在这里问一个问题。如果这里有人遇到同样的问题,这会很有帮助。无效的代码:socket.on('disconnect',function(){socket.removeAllListeners();});///...................socket.disconnect();但是,使用受限库字段的解决方法:deleteio.sockets[url];io.j=[]; 最佳答案

javascript - Facebook 共享器和 prerender.io(在 angularjs 应用程序中)

我刚刚在我的tomcat服务器中设置了prerender.iomiddlewave(运行一些java网络服务和一个angularjs应用程序)。服务(prerender)正常工作,我可以看到添加到列表中的页面(当我向用户代理发送请求模拟时也是如此)。我的问题是Facebook分享按钮(来自addthis)。基本上,如果我访问一个尚未缓存的页面并单击“在Facebook上分享”按钮,它会向我显示angularjs模板,而不是“呈现”的模板。奇怪的是,然后我可以在Prerender.ioadmin上看到该页面。好像是太慢了,超时了。我仍然不知道它是如何获得页面的非缓存版本的。在第一次错误调

javascript - 使用 browserify 异步/延迟加载 Vue 组件

我试图在laravel项目中将许多Vue.js组件加载到我的app.js文件中(通过elixir使用browserify/vueify)。我不想一次加载每个组件,而是想在需要时使用vuerouter延迟加载各个vue组件。.我在哪里设置partitionbundlejson文件,它应该如何构建?目前,我将以下内容绑定(bind)到我的主要app.js文件中:importVuefrom'vue';importResourcefrom'vue-resource';importVueRouterfrom'vue-router';//ThesearethecomponentsthatIwish

javascript - javascript 或 firefox 中的 console.dir() 是异步的吗?

一个很奇怪的问题。在我的调试中,我发现console.dir(anArray)没有在浏览器的firebug控制台上输出当前值。例如,console.dir(anArray)//line1console.log(anArray[0].prop1)//line2codetochangethevalueofanArray[0].prop1//line3anArray是javascript/json对象的数组,在Firbug的控制台中,第1行输出了第3行设置的新值,第2行是旧值,是我想要的。唯一的解释是console.dir()是异步的,对吧?!我的环境:Windows7,Firefox6.0

javascript - 如何实现 Typescript 异步等待模式 : Where is the Promise

我正在学习Angular和Typescript。我有一个客户服务,在这个服务中我有一个方法,我希望从RESTfull服务返回一组客户。最初我是这样创建我的GetCustomers函数的:publicGetCustomers():Dtos.ICustomer[]{var_customers:Dtos.ICustomer[];this._httpService.get('http://localhost/myTestApi/api/customers/').success(function(data){_customers=dataasDtos.ICustomer[];}).error(f

JavaScript - 同步等待异步操作(休眠)

我知道这里被问过很多次,也回答过很多次,这不是应该如何完成的方式,但再一次:)是否有可能以某种方式调用异步函数(例如计时器/ajax调用),基本上是常见的异步任务并同步等待直到它结束而不会出现100%CPU使用率和浏览器阻塞?简单的回答就足够了——是或否。如果不是,我必须根据“异步方式”中的异步操作编写所有代码,否则会更好;)想象一下:updateCSS("someurl.css")functionupdateCSS(url){varcss=getCachedResource(url);css=css.replace(/regexp/gm,function(curUrl){base64