jQuery的异步问题Javascript
Async Problems with jQuery & Javascript
我在原地打转,似乎无法从Stack或Google目前可用的资源中找到解决方案。肯定有什么我没注意到的,也许你能帮上忙?
故事简介:
- 一个javascript函数在点击时启动,并在数据库中创建一个新的联系人。
- 在创建成功后,会调用其他函数来切换必要的设置,这取决于几个复选框。
- 当前异步调用,导致只有最后一个函数调用才能成功更新联系人。
- 我无论如何也不能接一个接一个的电话去上班。
- 每个调用在成功完成后返回一个JsonResult,如果这对应用程序的其他区域有帮助的话。
当前代码如下:
function CreateClicked(){
Contact.Create(**bunch of params**, function(data){
if(data.success) {
togglePrimary(data.newId);
toggleBilling(data.newId);
toggleTechnical(data.newId);
toggleBalance(data.newId);
toggleSecurity(data.newId);
toggleMarketing(data.newId);
Modal.Load(**loads a modal view**);
}
}
}
切换函数如下所示:
function togglePrimary(id) {
if ($("#contact_admin_primaryrole").prop('checked'))
{Contact.TogglePrimaryRole(id);}
}
调用一个像这样的控制器函数:
public JsonResult TogglePrimaryRole(int contactId){
try{
var c = new Contact(contactId);
c.IsPrimaryContact = !c.IsPrimaryContact;
c.Update(AuthenticatedUser.Username, !c.IsPrimaryContact);
return Json(JSONResponseFactory.SuccessResponse("Contact updated successfully"));
}
catch (Exception ex){
return Json(JSONResponseFactory.ErrorResponse(ex.Message));
}
}
我应该如何去设置这个,以便每个切换函数不开始,直到前一个已经完成并返回Json响应,不管成功吗?
任何想法?
欢呼,丢在
使用jQuery承诺会有帮助:
togglePrimary(data.newId).then(toggleBilling(data.newId)).then(toggleTechnical(data.newId)
等。
只有当上一个函数成功时才会运行下一个函数。如果你想调用与结果无关的函数,那么使用always()而不是then()
togglePrimary(data.newId).always(toggleBilling(data.newId)).always(toggleTechnical(data.newId)
这将需要引用jquery 1.6或更高版本。要从CDN引用,请添加以下
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
我似乎无法得到任何地方与承诺,或javascript函数链与回调…所以我将每个状态的值转换为字符串数组,并在控制器中对其进行解析!
谢谢你的帮助
- javascript问题正文样式
- 将代码放入click函数时出现javascript问题
- 奇怪的javascript问题
- 选中复选框的Jquery/Javascript问题使用输入框操作将行从一个表添加到另一个表
- 多上传的JavaScript问题
- 使用YouTube iFrame API的IE中的JavaScript问题
- 关于函数的Javascript问题 - IIFE
- Javascript问题与下拉菜单上的单击事件有关
- JavaScript 问题 - 意外的令牌 (.
- Chrome 中的 JavaScript 问题
- 在javascript问题中应用复合css规则
- Javascript问题,flexslider脚本未加载
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- jQuery到纯javaScript问题
- javascript问题后的onblur和onfocus
- 谷歌地图API和JavaScript问题:-(
- 第三方javascript问题
- javascript问题中的全局变量
- 嵌套if的javascript问题
- 绑定的Javascript问题