【发布时间】:2017-06-28 01:25:40
【问题描述】:
我对 Javascript 还是很陌生。请不要太苛刻:)
我有两个函数,这两个函数都涉及在 for 循环中执行 jQuery 请求。例如,
function a(n,locations) {
for (var i = 0; i < n; i ++) {
$.ajax({
url: 'https://geocoder.cit.api.here.com/6.2/geocode.json',
type: 'GET',
dataType: 'jsonp',
jsonp: 'jsoncallback',
data: {
searchtext: input,
app_id: APP_ID,
app_code: APP_CODE,
},
success: function (data) {
handleData(data,locations);
}
});
}
handleData() 函数将从 jQuery 数据中更改空数组 locations。我的函数b(m) 的格式类似,但会使用更新后的位置作为输入。
现在,我有一个c(n,m),我想在其中依次执行a() 和b():
function c(n,m) {
var locations = [];
a(n,locations);
b(m,locations);
}
从以前的答案中,我了解到可以通过使用承诺(例如.then)来实现涉及 jQuery 调用的顺序执行函数。但是这个方案只适用于a(n)返回promise的情况,在for循环结构下是无法实现的。您能否分享您对如何解决此问题的见解?提前感谢您的帮助。
【问题讨论】:
-
你不是已经在依次运行你的两个函数了吗?函数
c将运行a,a将通过for循环,然后一旦for循环完成,b将启动。这不是你想要的吗? -
@ObsidianAge 抱歉,我不清楚。在
a中,我想更新一个数组locations,我想在b中使用它的更新版本。 -
如果这能解决您的问题,请告诉我。
标签: javascript jquery ajax asynchronous