Javascript 在迭代父循环之前返回AJAX数据
对不起,伙计们,尽管我在网上读到了各种各样的场景,但我似乎无法理解这一点。因此,情况如下: 我有一个字符串数组,名为Javascript 在迭代父循环之前返回AJAX数据,javascript,jquery,ajax,Javascript,Jquery,Ajax,对不起,伙计们,尽管我在网上读到了各种各样的场景,但我似乎无法理解这一点。因此,情况如下: 我有一个字符串数组,名为recipientsList 对于该数组中的每个字符串,我希望进行一个AJAX调用,将该字符串作为参数传入,然后将数据从AJAX返回给回调函数 我的代码如下。发生的情况是,如果我在recipientsList数组中有三个字符串,那么我的expandDistributionList函数会被调用三次,但代码在每次完成迭代之前都不会命中AJAX调用的成功部分。想法 function ex
recipientsList
对于该数组中的每个字符串,我希望进行一个AJAX调用,将该字符串作为参数传入,然后将数据从AJAX返回给回调函数
我的代码如下。发生的情况是,如果我在recipientsList
数组中有三个字符串,那么我的expandDistributionList
函数会被调用三次,但代码在每次完成迭代之前都不会命中AJAX调用的成功部分。想法
function expandDistributionList(emailAddress, cb) {
$.ajax({
url: "/expandDistributionList",
type: 'get',
dataType: 'json',
context: this,
data: {
distListName: emailAddress,
},
success: function(data) {
cb(data);
},
error: function() {
ace.search.mainframeErrorSignal = $.signal({
'message': 'Unable to expand distribution list.',
'addClass': 'error',
'sticky': true
});
}
});
}
recipientsList.each(function(item) {
expandDistributionList(item, function(data){
if(data...) {
//do some code here
}
else {
//do something else
}
});
});
嗯,
我不确定,但这对我的代码有效
function sendAsJSON(url, data, async, successCallback, errorCallback) {
$.ajax({
url: url,
data: data,
type: "POST",
async: true,
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data) {
if (successCallback != null) {
successCallback(data.d);
}
},
error: function (errorData) {
if (errorCallback != null) {
errorCallback();
}
}
});
}
您是否介意将“GET”更改为“POST”并添加contenttype。这是JavaScript事件模型的标准行为,您的回调将在事件队列中排队,并将在主代码完成工作后执行 因为我的英语很差,所以我从AsyncJavaScript一书中得到了一些关于这方面的描述 JavaScript中事件调度的易用性是该语言最重要的特性之一 功能强大。像setTimeout这样的异步函数使执行延迟 简单,没有产生线程。JavaScript代码永远不会被中断, 报告勘误表,因为事件只能在代码运行时排队;他们不能开火,除非 完成了
您可以使用promise链接您的异步请求,这是一个很好的示例hmm,不确定上面的代码将如何解决在.each完成后ajax调用完成的问题。你能解释一下吗?嗯,我不确定,我试着把我的一些代码放在一个循环中,效果很好。你介意试试这个吗?这是有道理的,但它并没有真正阐明如何围绕这个问题进行编码。你能发布一个我可以遵循的代码解决方案吗?@Leann为什么这种行为对你来说是个问题?除非同步请求,否则无法停止循环并等待请求成功。我认为设置async:false很麻烦,因为它可能会严重冻结浏览器,因此我正在寻找替代解决方案。是的,这可能会严重冻结浏览器,这真的很糟糕。那么,您希望一个接一个地执行异步请求,这对吗?