【发布时间】:2015-04-23 23:34:10
【问题描述】:
我有一个返回 jQuery 延迟 AJAX 对象的函数数组,称为 phoneAjaxCalls。我的代码将多次调用推送到一个名为 newPhone 的函数,该函数接受两个参数。
function newPhone(tlcPhone, studentsdcid) {
//Create new email
return $j.ajax({
type: 'POST',
url: '/admin/changesrecorded.white.html',
data: tlcPhone
});
}
我尝试使用此代码向newPhone 添加对phoneAjaxCalls 的调用,
phoneAjaxCalls.push(newPhone(tlcPhone, stagingFormPhone.studentsdcid));
然后在我的代码中,我使用
$.when.apply($j, phoneAjaxCalls).done(function () {
//all phoneAjaxCalls MUST be complete before this code runs
//Redirect to a different page by changing window.location
});
解析 jQuery deferreds 数组。
通过在 DevTools 中使用断点,我发现不是在调用 $.when 时调用 newPhone,而是在调用 .push 时调用。
如何在不立即调用newPhone 的情况下将调用添加到phoneAjaxCalls 数组?
我看到的错误是页面在phoneAjaxCalls 中的所有调用都可以完成之前被重定向。
如果您想查看我的整个代码库,可以查看here。这是一个可怕的混乱,因为这是一个匆忙的项目。也欢迎任何其他反馈,在这里或在 Github 上。有问题的文件可以在here 找到。
【问题讨论】:
-
问题是代码被编写为立即启动 ajax 调用,然后返回一个承诺,当数据准备好时解决。
-
您想要的事件顺序是什么?您想在稍后调用
$.when时将加载函数排队并启动它们吗? -
完整代码调用
newPhone3 次,在调用 done() 回调之前,我需要这三个调用完全完成。你说得对,我真正的意思是添加到数组中的 Promise 对象,而不是函数本身。 -
@NathanJones 如果您认为这是一个错误的问题,可以关闭它或删除 i
-
你是什么意思“错误的功能”
标签: javascript jquery ajax promise