Tag: 异步

PHP多个Ajax请求:第一个请求阻止第二个请求

我在一个页面上有2个ajax请求。 我跑第一个请求并分别开始第二个请求。 但第二个在第一个运行后停止工作。 当第一次结束时继续。 首先需要花费很长时间 – 例如30-60秒,在这段时间我需要第二个请求来显示第一个请求会发生什么。 我尝试使用async:true但它对我没有帮助。 这是我的代码 var auto_refresh = setInterval( function() { asyncGet(‘log.php’) }, 1000 ); function asyncGet(addr) { $.ajax({ url: addr, async: true, success: function (response) { $(‘#loadLog’).html(response); } }); } function getConn(addr) { $.ajax({ url: addr, async: true, success: function (response) { stopGet(); } }); } 我用这种方式首先调用ajax请求:getConn(’main.php’); 从function按下按钮。 第二个请求它正在运行,但在第一个请求完成之前没有显示响应。 我将附上来自萤火虫的图像。 […]

浏览器呈现和javascript执行的同步/异步特性

我有一些处理需要几秒钟,所以我想在它正在进行时添加一个可视指示器。 .processing { background-color: #ff0000; } Processing 脚本: $(“#mydiv”).addClass(“processing”); // Do some long running processing $(“#mydiv”).removeClass(“processing”); 我天真地认为该类将应用于div并且UI将被更新。 但是,在浏览器中运行它(至少在Firefox中),div永远不会突出显示。 有人可以向我解释为什么我的div永远不会突出显示? 添加该类,进行处理,然后删除该类; UI不会在两者之间更新,用户永远不会看到红色背景。 我知道JS是单线程的,但我总是假设浏览器渲染会在DOM更新时同步运行。 我的假设不正确吗? 更重要的是,实现这种效果的推荐方法是什么? 我是否必须使用setTimeout使慢速处理异步并使用回调? 必须有更好的方法,因为我真的不需要异步行为; 我只想要UI刷新。 编辑: JSFiddle: http : //jsfiddle.net/SE8wD/5/ (注意,您可能需要调整循环迭代次数,以便在您自己的PC上为您提供合理的延迟)

我可以使用`fetch`从另一个运行JS脚本吗?

在这里降低中级JS / JQ人。 我试图通过使用JS fetch来逃避回调地狱。 这被称为“AJAX的替代品”,似乎非常强大。 我可以看到你如何用它来获取HTML和JSON对象……但是它能够运行你所在的另一个JS脚本吗? 也许ES6中还有另一个新function: $.getScript( ‘xxx.js’ ); 即 $.ajax({ url : ‘xxx.js’, dataType : “script”, }); …? 后来,回应约瑟夫梦想家: 试过这个: const createdScript = $(document.createElement(‘script’)).attr(‘src’, ‘generic.js’); fetch( createdScript )… …它没有运行脚本“generic.js”。 你的意思是什么?

从匿名异步函数返回数据?

考虑: function ajaxCall(url, callback) { $.ajax({ type: “GET”, url: url, success: function (data) { // <– fail point: where does the returned data go, now? // do stuff with data if ( callback ) { var ret = callback(); if ( ret !== undefined ) { return ret; } } } }); } function fooBar() […]

typeahead.js ajax远程数据源仅适用于同步ajax请求

Typeahead.js仅在同步提交请求时才使用自定义ajax远程数据源,而不是异步提交。 异步提交时(async:true),我的脚本和自定义TABoards()函数在cb()函数传播结果列表之前完成。 我的代码完美无瑕地运行并产生两个数据源的结果:一个远程ajax数据源和一个“静态”数据源,它总是生成一个“查看[查询]的所有结果”结果。 但是,生成的代码还会在浏览器javascript控制台中生成以下通知:“主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用。” 添加“.done(function(){cb(response)});” 不工作。 除了不生成浏览器通知外,如何重写此代码才能完全相同? var TABoards = function(q, cb){ $.ajax({ dataType: “json”, async: false, url: ‘/typeahead.php?q=’+q+’&type=boards’, success: function(response){ cb(response); } }); } $(‘#hdrSrchQ’).typeahead({ highlight: true, hint: false, minLength: 3 }, { name: ‘ta-boards’, displayKey: ‘title’, source: TABoards, templates: { header: ‘Boards’, suggestion: function(data){ return ” + data.title + ‘ – ‘ + […]

按顺序加载图像

我正在构建一个包含大量大图像(10-40,~300kb / img)的网站,并寻找一种顺序加载(不显示!)的方式。 我已经有一块js,一旦前3个图像被加载就会显示并触发旋转木马(其他的将在前3个显示时加载到背景上),因为图像将异步加载,它没有多大用处。 这样,有没有一种方法只在加载前一个图像时加载图像? 这是我的HTML。 我的js: var numImagesLoaded = 0; function incrementAndCheckLoading(){ numImagesLoaded++; if(numImagesLoaded == 4){ // trigger carousel } } image1 = new Image(); image1.src = “http://cccctanger.com/test/img/1.jpg” image1.onload = incrementAndCheckLoading; image2 = new Image(); image2.src = “http://cccctanger.com/test/img/2.jpg” image2.onload = incrementAndCheckLoading; image3 = new Image(); image3.src = “http://cccctanger.com/test/img/3.jpg” image3.onload = incrementAndCheckLoading; image4 = new […]

Google Geocoder异步问题

我相信我遇到了地理编码器结果的时间问题。 请参阅下面的代码片段。 我基本上执行地理编码并获得结果。 然后我通过jQuery AJAX调用将结果传递给服务器端方法。 最后,该方法的结果返回一个JSON对象。 根据结果​​,我可能会或可能不会执行第二个地理编码。 这就是问题所在。 您可以看到我将变量hasResult默认为false,并在确定有效结果时切换为true。 在所有情况下,这都是完美的,除非需要第二个地理编码。 地理编码成功发生并且代码执行,但最终的hasResult检查仍然返回false。 怎么会这样? var hasResult = false; geocoder.geocode({ “address”: address }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { $.ajax({ url: “URL”, type: “POST”, dataType: “json”, data: results contentType: “application/json; charset=utf-8”, success: function (result) { if (result.Valid) { hasResult = false; //Some other code, works […]

在asp.net中实时显示命令行程序的输出

我正在编写一个Web应用程序,其中应用程序使用System.Diagnostics类在系统上运行命令。 我想从命令中显示实时输出,这需要花费很多时间才能完成。 搜索了一下之后,我发现BeginOutputReadLine可以将输出流式传输到事件处理程序。 我也使用jquery ajax来调用此方法并使进程异步运行。 到目前为止,我试图这样做: Process p2= new Process(); p2.OutputDataReceived += new DataReceivedEventHandler(opHandler); p2= Process.Start (psi2); p2.BeginOutputReadLine(); 我已经声明了一个带有静态变量的类来存储命令的输出,因为页面上的Label不能从静态方法访问。 public class ProcessOutput { public static string strOutput; [WebMethod] public static string getOutput() { return strOutput; } } 在BeginOutputReadLine的事件处理程序中,使用输出中的行设置变量。 private static void opHandler(object sendingProcess,DataReceivedEventArgs outLine) { if (!String.IsNullOrEmpty(outLine.Data)) { ProcessOutput.strOutput= outLine.Data; } } 从aspx页面,我调用方法来获取strOutput的值 $(document).ready(function() { […]

如何确保异步加载时jQuery可用

Google允许您异步加载jQuery,如下所示: // 在以后的脚本中,如何确保加载jQuery? 我可以使用setInterval来检查jQuery是否已设置,但假设scriptb.js依赖于scripta.js ,并且两者都包含在setInterval以等待jQuery,因此间隔将“随机”执行任一个。 我该如何处理这个问题? 谢谢!

Javascript数组排序是异步的吗?

Javascript Array.sort函数是否异步? 我不这么认为,但是当我运行以下代码时,它确实似乎是: $(‘#alphabetical-order’).data(‘sort-column’, ‘FileAlpha’); $(‘#first-numeric-order’).data(‘sort-column’, ‘FileFirstNumeric’); $(‘#last-numeric-order’).data(‘sort-column’, ‘FileLastNumeric’); $(‘#alphabetical-order, #first-numeric-order, #last-numeric-order’).each(function() { var $this = $(this); $this.data(‘compare-function’, function(row1, row2) { console.log(‘column = ‘ + $this.data(‘sort-column’)); // >> DEBUG 1 compareRowsBasedOnColumn(row1, row2, $this.data(‘sort-column’)); }); }).click(function() { var $this = $(this); var $content = $(‘table.sheetlist-content tr.content’); $content.sort($this.data(‘compare-function’)); console.log(‘$content.sort complete’); // >> DEBUG 2 $table_body = $(‘table.sheetlist-content […]