Tag: 异步

为什么我的jQuery when()。then()函数在ajax请求完成之前触发?

我需要设置异步回调,因为函数从远程位置获取内容。 我这样做: $.when( priv[box.view.renderWith](content, box.view.gadget_id) ).then(function(late) { console.log(“done”); console.log(late) console.log($(content)) $(content).append(late).enhanceWithin(); }); 使用my when函数触发单个Ajax请求。 在它的回调中,我正在返回一个元素以附加到$(content) 。 我的问题是, then函数在我的ajax回调运行之前很久then触发并返回一些东西。 问题 : 是否无法使用带有ajax请求的函数的when() ? 我是否必须在when()直接发出ajax请求? 或者为什么then()马上触发? 我怎么能解决这个问题? 谢谢! 编辑:我当前版本的代码段: $.when( priv[box.view.renderWith](content, box.view.gadget_id) ).then(function(fragment) { // DOM manip… console.log(“NOW WE ARE DONE WITH WHEN”); console.log(fragment) $(content).append(fragment).enhanceWithin(); }); 而函数,我正在调用(没有内容生成部分): priv.constructListbox = function (element, internal) { var no_data_body, no_data_cell, portable, […]

使用jQuery延迟并在循环中完成异步SQLite数据库查询

我正在创建一个应用程序,其中插入查询放在循环中: db.transaction(function(ctx) { ctx.executeSql(“DELETE from table”, [], function(x,y){ $.each(result, function(i, val) { db.transaction(function(ctx) { ctx.executeSql(“INSERT INTO table(value1, value2) VALUES(‘”+val.value1+”‘,'”+val.value2+”‘)”, []); }, function(err){ alert(“Error processing SQL: “+err.message); },function(){ console.log(“finished one loop of insert”); }); }); }); }, function(){ //error }, function(){ //success console.log(“finished syncing”); //this runs before all the inserts as the inserts are seperate queries […]

自定义JS使用jQuery.Deferred确认模态并根据按钮发出返回值

我是一个最近进入Javascript世界的java开发人员,所以如果我犯了一些愚蠢的错误或假设,请原谅我。 我试图将我们的原生浏览器/ js“确认”对话框转换为主要使用骨干框架开发的自定义模式。 目前,这些模态不支持“确认”类型function。 我认为主要问题是我的模态当前不是异步工作的。 我有一个方法,我打电话打开一个模态,我希望从通话中收到一个“真”或“假”值,这取决于用户点击的按钮。 但是,目前我的方法会在显示模态后立即返回,并且不会等待按钮单击。 模态系统支持每个按钮的单独回调,可以在调用“openPortletModal”方法时定义,如下所示。 但是,“confirmDiscard”方法返回一个未定义的值,而不会等待任何按钮调用。 我的问题是,是否可以暂停执行方法直到进行回调? 在研究的过程中,我确实发现了一些关于jQuery.Deferred的内容,但是我还没有找到一种明确的方法来利用它来获得我想要的function,而且我看到的任何示例都没有包含基于回调的不同返回值。 这是我的示例代码: confirmDiscard: function(context) { var deferred = new $.Deferred(); MyModal.openPortletModal(context, null, { views: [{ name: “auth”, title: “Confirmation”, renderResponseData: “This is a test”, //Message that modal renders buttons: [{ type: “FINISH”, label: “OK”, click: function() { console.log(“CLICKED OK”); deferred.resolve(“true”); //this is ultimately what I’d […]

回调返回undefined

我试图从GMail API获取数据,以便能够从base64加密加载附件数据,但是当我尝试返回它时,我得到了未定义。 $Message[‘Content’][‘Attachment’][$Count][‘Data’] = getAttachments($Message[‘Details’][‘ID’], message[‘payload’][‘parts’][key], function (filename, mimeType, attachment) { return ‘data:’+mimeType+’;base64,’+attachment.data.replace(/-/g, ‘+’).replace(/_/g, ‘/’); }); function getAttachments(messageID, parts, callback) { var attachId = parts.body.attachmentId; var request = gapi.client.gmail.users.messages.attachments.get({ ‘id’: attachId, ‘messageId’: messageID, ‘userId’: ‘me’ }); request.execute(function (attachment) { callback(parts.filename, parts.mimeType, attachment); }); } 问题似乎是在函数返回值后数据可用。 这已经通过console.log()进行了测试。

如何等待所有XHR2发送呼叫完成

我已经完成了一些代码,可以将多个文件从浏览器上传到服务器,同时显示进度条。 XHR2发送调用是异步的。 问题是我希望在所有XHR2发送调用完成后调用一些函数。 这是我的代码的一个非常简化的片段: var files = document.getElementById(“upload”).files; for (var i = 0, length = files.length; i < length; i++) { var file = files[i]; var uploadFunc = function (arg) { return function () { processXHR(arg); }; }(file); uploadFunc(); } function processXHR(file) { var normalizedFileName = getNormalizedName(file.name); var url = 'upload_file/'; var formData = new […]

在while循环中延迟

所以我想在jquery中做一个延迟的ajax请求,直到我收到一个特定的服务器响应(非null)。 我该怎么做呢? while (data.response != null) { $.ajax(..).done(function(data); } function doUntilResult() { Server.doA().done(function(data) { Server.doB(data).done(function(result) { //if result == null, repeat again }); }); }

为什么我的变量在函数内部修改后没有变化? – 异步代码引用

鉴于以下示例,为什么在所有情况下都未定义outerScopeVar ? var outerScopeVar; var img = document.createElement(‘img’); img.onload = function() { outerScopeVar = this.width; }; img.src = ‘lolcat.png’; alert(outerScopeVar); var outerScopeVar; setTimeout(function() { outerScopeVar = ‘Hello Asynchronous World!’; }, 0); alert(outerScopeVar); // Example using some jQuery var outerScopeVar; $.post(‘loldog’, function(response) { outerScopeVar = response; }); alert(outerScopeVar); // Node.js example var outerScopeVar; fs.readFile(‘./catdog.html’, function(err, data) […]

JavaScript – 为什么我的asrnchronous下载不能异步下载?

我正在使用以下Google Maps自动加载(异步)加载异步Google Maps v3和JQuery,如下所示: 但是,查看网络流量时,似乎不是异步下载。 替代文字http://img339.imageshack.us/img339/5986/jquerydelaying.png 问题 :有没有人理解为什么%7Bcommon (google-maps)文件从下载延迟到jquery-ui.min文件首先完成下载?

在AJAX完成之前没有发生成功函数

我试图使用之前的jQuery dialog beforeClosefunction。 我正在检查用户表单数据是否格式正确,如果没有,则返回false到beforeClose ,这样用户就可以重新输入信息。 对话框代码调用submituserupdateform中的函数beforeClose : .dialog({beforeClose: function () { formresult=submituserupdateform($(‘#myaccountdialog’).find(‘form’)); if (formresult !=”okay”){ return false; } }}) submituserupdateform函数检查代码中是否有错误: function submituserupdateform($tgt){ var url=’./includes/admin/user/myaccount.php’; $.ajax({ type: “POST”, url: url, data: $tgt.serialize(), success: function(data){ $(“#myaccountdialog”).html(data); if ($(‘.error’).length){ var myresult= “notokay”; } else { var myresult =”okay”; } }, dataType: “html” }); return myresult; } 我搜索过,发现https://stackoverflow.com/questions/1632039/return-value-from-ajax-call ,但我已经在我的成功回调中设置了myresult […]

jQuery when()。done()不适合我

我有下面的jQuery代码,但是when().done()对我来说不能正常工作。 updateResultFooter()被称为bedore, doReverseSearch()方法完成了她的工作。 并且因此,我的视图中的按钮被启用,然后在doReverseSearch()方法中replace之后重新获取其默认值(desabled)。 $(“#idBnSearch”).click(function () { $.when(doReverseSearch(telValue, pageIndex, methodUrl)) .done(function () { updateResultFooter(“@ViewBag.CountResult”, pageIndex, “@ViewBag.PageCount”); }); }); function updateResultFooter(resultCount, pageIndex, pageCount) { if (pageIndex == 0) $(“#bnPreviousPage”).attr(‘disabled’, ‘disabled’); else $(“#bnPreviousPage”).removeAttr(‘disabled’); if ((pageIndex + 1) == pageCount) $(“#bnNextPage”).attr(‘disabled’, ‘disabled’); else $(“#bnNextPage”).removeAttr(‘disabled’); } function doReverseSearch(telValue, pageIdx, methodUrl) { $.ajax( { url: methodUrl, type: ‘post’, data: JSON.stringify({ […]