在foreach中获取ajax结果
Get ajax result in foreach
我尝试从服务yelp加载数据,请求没有问题,但我无法将其推送到数组并返回。我需要在每次迭代中得到ajax结果。如何在收到ajax结果之前停止它?
有人能帮我吗?
this.getDataForPlaces = function(addresses){
var locationDescs = [];
_.each(addresses, function(address){
var promise = getLocationDesc(address).then(function(data) {
locationDescs.push(data);
});
})
return locationDescs;
};
var getLocationDesc = function(address){
var parameters = [];
var message = {
'action' : 'http://api.yelp.com/v2/search',
'method' : 'GET',
'parameters' : parameters
};
OAuth.setTimestampAndNonce(message);
OAuth.SignatureMethod.sign(message, accessor);
var parameterMap = OAuth.getParameterMap(message.parameters);
return $.ajax({
'url' : message.action,
'cache': true,
'method':message.method,
'data' : parameterMap,
'dataType' : 'jsonp',
'jsonp' : 'callback',
'success':function(data){
console.log(data);
}
});
};
您必须返回data
变量,而不是像这样的ajax
函数:替换以下
return $.ajax({
'url' : message.action,
'cache': true,
'method':message.method,
'data' : parameterMap,
'dataType' : 'jsonp',
'jsonp' : 'callback',
'success':function(data){
console.log(data);
}
});
带有
$.ajax({
'url' : message.action,
'cache': true,
'method':message.method,
'data' : parameterMap,
'dataType' : 'jsonp',
'jsonp' : 'callback',
'success':function(data){
return data;
}
});
为了暂停/停止循环直到ajax请求完成,您可以替换以下内容:
var promise = getLocationDesc(address).then(function(data) {
locationDescs.push(data);
});
带有
var promise = $.when(getLocationDesc(address)).done(function(data){
locationDescs.push(data);
});
如果以上不起作用,则使用以下方法,并用以下替换整个环路
var locationDescs = [];
_.each(addresses, function(address){
locationDescs.push(getLocationDesc(address));
});
$.when.apply($,locationDescs).done(function(){
});
不要返回完整的ajax函数,只在ajax的success
函数中返回data
,如下所示:return data;
因为返回整个ajax函数,它不是从服务中获得的数据,所以必须返回数据变量。
相关文章:
- 在foreach中获取ajax结果
- 使用blob从ajax结果下载文件
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 在文本框中显示ajax结果
- 从回调函数返回 AJAX 结果
- 将AJAX结果作为道具传递给子组件
- 使用passthrough将ajax结果中的变量发送到php
- 等待ajax结果绑定淘汰模型
- 如何重置AJAX结果输入字段
- jquery不解析ajax结果
- 为什么我不能返回 $.ajax 结果,但可以返回 $http.post 的结果
- Javascript:将 AJAX 结果保存为 Class 变量
- Ajax 结果取决于 PHP 结果
- 在 ajax 结果中获取此内容
- 动态处理 ajax 结果
- 在视图页面上显示 AJAX 结果 jQuery
- Ajax 结果显示未定义
- 如何使用 AJAX 结果在点击功能
- 使用 jQuery 在 Ajax 结果中查找节点
- 返回到 ajax 结果页面上上次看到的位置