Tag: 异步

Conjuring JQuery延迟了monadic咒语

受到这个 (优秀的)讨论在javascript中使用Promise的启发,我试图找出如何使用Deferred将异步和非异步函数链接在一起,以避免在使用我的“ 全局存储 ”代码时支付回调税。 我有几个与此相关的问题,但我会在这里一起问他们,因为背景是一样的。 我无法解决的一件事是我如何能够推断出非异步的东西 – 也就是说,如何获取值,将其包装在promise中并直接返回? ( a -> M ) 另外,我如何获取异步函数并将其包装,以便它直接返回结果,但包含在promise中? ( (a -> b) -> (a -> M) ) 最后一个问题,对于monadic怪胎 – 这个函数有一个标准名称吗? [a] -> (a -> M) -> M

jquery ajax调用不是异步的

我对jQuery实现它的AJAX方法很新鲜。 我有一个简单的设置,访问两个不同的页面,一个需要10秒钟才能完成(我有一个计时器设置)和一个检查第一页的状态。 这两个函数是progressCheck() ,它每秒以最新状态请求其页面,而beginLogin()需要10秒才能加载。 我在服务器上的用户对象中设置了一个值,这两个页面都通过symfony 1.4访问。 问题是progressCheck()正常工作,直到我单击beginLogin() ,然后在beginLogin()完成之前不会进行任何更改。 我有两个函数设置为异步运行。 我知道这一定很简单,但我很茫然。 我在运行此页面时运行了Firebug – Net,结果是: 在10秒呼叫的等待期间调用了许多progressCheck() ,但Net表示它们在没有任何等待时间的情况下运行了大约200毫秒。 有任何想法吗? 代码如下: Begin Login Check Progress Clear Check #progress_div { width: 800px; height: 200px; border: 1px solid #CCCCCC; overflow: scroll; background-color: #AAEEFF; } #result_div { width: 800px; height: 300px; border: 1px solid #CCCCCC; overflow: scroll; background-color: #FFEEAA; } function beginLogin() […]

jquery ajax with async false挂起firefox

我有一个代码调用$ .ajax像这样: $.ajax({ type: “POST”, url: “/sandbox/graphloader/mock3”, async: false, data: {calInput1:dates[0], calInput2:dates[1]}, success: function(data){ data=eval(data); for(var x in data[0]){ //alert(data[0][x]); //fill columns here; } fillPercents(column); }}); 现在,这适用于所有浏览器,而不是Firefox。 firebug显示它正在收到来自post的回复,但是对于某些未知错误,它没有显示数据。 可能是什么问题?

jQuery等到async ajax调用完成

嗨我在我的脚本中有2个ajax调用,我需要它们运行asnyc来腾出时间,但我需要第二个等到第一个完成。 $.ajax({ type: “POST”, url: “getText.asmx/ws_getText”, data: parO1, contentType: “application/json; charset=utf-8”, dataType: “json”, success: function (msg) { alert(msg.d.data); } , error: function () { chyba(“chyba v požadavku”, “df”); } }); if (parO2.length > 0) { $.ajax({ type: “POST”, url: “getText.asmx/ws_getText”, data: parO2, contentType: “application/json; charset=utf-8”, dataType: “json”, success: function (msg) { /*WAIT UNTIL THE FIRST […]

如何在没有async = false的情况下执行jQuery阻止AJAX调用?

我有一个页面在继续下一页之前对电子邮件进行AJAXvalidation,使用HTML5 setCustomValidity()方法[使用旧浏览器的webshims库]。 为此,我在$ .ajax()调用中将async选项设置为false以使其同步,阻止页面等待AJAX​​响应,否则表单在ajax调用返回之前提交,从而使validation无效。 function validateEmailRegistered(input) { if (input.setCustomValidity === undefined) return; var err = ‘Email address not found’; $.ajax({ url: ’email-is-registered.php’, data: { email: input.value }, async: false, success: function(data) { var ok = data==’true’; input.setCustomValidity(ok ? ” : err) } }); } go 我看到从jQuery 1.8开始不推荐使用async选项。 如果没有async选项,如何实现此阻止操作?

jQuery Ajax / .each回调,在ajax完成之前下一个’each’触发

嗨,当我提交表单时,会调用以下Javascript。 它首先从文本区域中分割出一堆url,然后: 1)为每个url添加一个表格,在最后一列(“状态”列)中显示“未开始”。 2)再次循环遍历每个URL,首先关闭它进行ajax调用以检查状态(status.php),该状态将返回0-100的百分比。 3)在同一循环中,它通过ajax(process.php)启动实际进程,当进程完成时(记住连续状态更新),它将在状态列中显示“已完成”并退出自动刷新。 4)然后它应该转到下一个’each’并为下一个url做同样的事情。 function formSubmit(){ var lines = $(‘#urls’).val().split(‘\n’); $.each(lines, function(key, value) { $(‘#dlTable tr:last’).after(”+value+’Not Started’); }); $.each(lines, function(key, value) { var auto_refresh = setInterval( function () { $.ajax({ url: ‘status.php’, success: function(data) { $(‘#dlTable’).find(“tr”).eq(key+1).children().last().replaceWith(“”+data+””); } }); }, 1000); $.ajax({ url: ‘process.php?id=’+value, success: function(msg) { clearInterval(auto_refresh); $(‘#dlTable’).find(“tr”).eq(key+1).children().last().replaceWith(“completed rip”); } }); }); }

jquery ajax()async false

我有问题.. for(a=1;a<10;a++){ $(".div").append("”) $.ajax({ url: “file.php”, data: “a=”+a, type: “POST”, async: false, success: function(data) { $(“#”+a).html(data); } }); } $(“div”).click(function(){ alert(“it works”); }); 问题是:我没有把async: false放在那里async: false来自file.php的 async: false数据只在最后一个div中,所以id为9但是现在有async: false – 所以数据在每个div中都是好的 但如果我想点击它是由ajax加载它不起作用(只有在完成所有ajax-es后) 怎么解决这个问题? (也许错误是我使用ajax。我可以使用getJSON等…) 谢谢你的帮助

使用JavaScript和jQuery的简单长轮询示例

我正在尝试创建一个实时网站分析仪表板,它使用jQuery / JavaScript异步创建与服务器的开放HTTP连接,以便在服务器发生时轮询服务器以获取数据更新。 显而易见的开始是使用XMLHttpRequest对象或jQuery的$.ajax方法向服务器发送GET或POST请求,异步请求一些数据。 但是,除了每隔30 seconds使用setInterval方法一次发送一个请求之外,我不确定如何连接到服务器持久性。 基本上,我只想发送一个http请求,并确保与服务器的连接保持打开状态以进行轮询! 我的setInterval示例代码如下: var analytics = document.getElementById(‘analytics’); setInterval(function(){ $.ajax({ url: “http://server.com/”, success: function(data){ analytics.innerHTML = data; }, dataType: “json”}); }, 30000);

在继续之前等待API调用以完成Javascript

我过去一直在努力解决的问题就是阻止API / AJAX继续下去,直到你收到你的回复为止。 目前我正在使用Facebook API。 我需要从调用中获得响应然后返回它但发生的事情是我的函数在我从API调用得到响应之前返回。 我知道为什么会这样,我只是无法弄清楚如何防止它! 这是我的代码…… function makeCall(){ var finalresponse = “”; var body = ‘Test post’; FB.api(‘/me/feed’, ‘post’, { message: body }, function(response) { if (!response || response.error) { finalresponse = response.error; } else { finalresponse = ‘Post ID: ‘ + response.id; } }); return finalresponse; } // —–编辑 我注意到有些人建议像这样…… function makeCall(){ […]

使用jQuery调用控制器操作

我有一个很好的页面,可以完成我需要的一切。 然而,其中一个元素(部分页面)需要几秒钟,然后我想加载。 所以我想做的是首先显示没有这个部分的页面但是在它的位置显示“加载”gif。 然后在我的jquery … $(document).ready(function() { // Call controller/action (ie Client/GetStuff) }); 我想调用我的控制器动作返回PartialView并更新我的div内容。 它基本上在加载时异步调用部分加载。 我可以使用ActionLink做到这一点,直到它达到我想要进行onload的程度。 如果我使用jQuery进行onloand类型调用,我甚至可以返回PartialView吗?