私のスクリプトは約15のajaxコールを自分のサーバーに送信します。私はそれらを並行して実行したい。私はwhen
を使用してAjaxリクエストの束を並行して実行しようとしていますが、何らかの理由でこれを1つずつ実行しています。
私のコードは以下の通りです:
var requests = $.map(results, function(result, i) {
var suggestionContainer = $('<div class="suggestion-' + i + '">' + result + '</div>');
resultsContainer.append(suggestionContainer);
return $.get('check.php', { keyword: result }).done(function(res) {
res = JSON.parse(res);
suggestionContainer.append(generateSocialMediaList(res.social_media))
.append(generateDomainList(res.domains));
}).fail(function() {
suggestionContainer.remove();
});
});
$.when(requests).done(function() {
console.log('Complete')
}, function() {
alert('Something Failed');
});
は私が間違ってやっているものはありますか?
私が15リクエストを行う理由は、check.php
が第三者APIを呼び出すためです。 APIは遅く、残念ながら代替手段はありません。 1つのリクエストよりも15個の並列リクエストを行うほうがはるかに速く、check.php
が完了するまで待ちます。 (問題を解決するために必須ではありませんとそれが含まれていない)suggestions.php
への要求がなされた
- :
コードはそうのように動作します。結果は配列
results
に格納されます。 - 結果(約15)が返され、
map
で反復処理されます。 - 提案をページに挿入します。私は約束を返す。
requests
アレイには現在10〜15の約束が含まれています。- 私は
when
を使ってリクエストを並行して実行します(これは少なくとも私がやろうとしていることです)。 - DOMが更新され、
check.php
の結果がDOMに挿入されます。
最初に15 httpリクエストを発行する理由を教えてください(jsとcssのアセットについては話しません)。 – Ismail
'requests'に' $ .get() 'ajaxリクエストの配列が含まれています。 APIサーバの 'php'スクリプト呼び出しは順番に実行されなければならないので、私は15回リクエストしています。バルクリクエストは受け付けません。 APIも遅いので、ユーザーが15をすべて完了するのを待たせるのではなく、15回の別々の呼び出しを行います。 – BugHunterUK
@hamismまた、リクエストはすぐには起こっていません。ユーザーがボタンを押したときに発生します。問題の原因となっている関連するコードのみが含まれています。 – BugHunterUK