私はJavascriptを使い慣れていません。それほど厳しくしないでください:)forループでjQueryを使って2つの関数を順番に実行します。
私は2つの関数を持っていますが、どちらも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)
は類似の形式ですが、更新された場所を入力として使用します。
は今、私はa()
とb()
順を実行したいと考えているc(n,m)
を持っている:
function c(n,m) {
var locations = [];
a(n,locations);
b(m,locations);
}
私はjQueryの呼び出しを含む順次実行する機能は、.then
として約束を(使用することによって達成することができることを理解し、前の回答から、 )。しかし、この解決法は、a(n)
が約束を返すときにのみ適用可能であり、これはforループ構造の下では達成できない。この問題を解決する方法についての洞察をお寄せください。助けを前にありがとう。
2つの機能を順番に実行していませんか?関数 'c'は' a'を実行し、 'a'は' for'ループを通り、その後 'for'ループが終了すると' b'が起動します。それはあなたが望むものではありませんか? –
@ObsidianAge申し訳ありませんが、私は不明確でした。 'a'では、更新されたバージョンの' b'で使用したい配列 'locations'を更新したいと思います。 –
これがあなたの問題を解決するかどうか教えてください。 –