Ajaxリクエスト(ローカルのJSONに1番目、オンラインリソースに2番目)の前に実行していた機能に問題があります。Ajaxを使用したJavaScript/jQueryコールバック
この例では、アプリケーションに必要なすべての情報が得られ、divに値を設定した後、countTheMovies
を最後に実行します。代わりに、それはすぐに実行されています。
if
の条件を使って遅延させようとしましたが、喜んでいませんでした。私もコールバックを試してみましたが、間違っているはずです(私はコールバックが答えだと仮定しています)。私はタイムディレイを知っていますが、実際のプロジェクトでは私は250以上の映画をソーシングしているので(タイムド・ディレイは不正に見えるので)、私はここで尋ねると思いました。
この問題を解決するにはJavaScriptまたはjQueryコードをお勧めしますか?
$(function(){
getMovieList();
});
function getMovieList() {
$.ajax({
url: "movielist.json",
type: "GET",
dataType: "JSON",
success: function(data) {
for (var i = 0; i < data.length; i++) {
var title = data[i].title.toLowerCase().split(" ").join("+");
var year = data[i].year;
i === data.length - 1
? getMovieInfo(title, year, true)
: getMovieInfo(title, year, false);
}
}
});
}
function getMovieInfo(title, year, isLast) {
$.ajax({
url: "https://www.omdbapi.com/?t=" + title + "&y=" + year + "&plot=short&r=json",
type: "GET",
crossDomain: true,
dataType: "JSON",
success: function(val) {
if (!val.Error) {
movie = title.replace(/[^a-z0-9\s]/gi, '');
$("#app").append(
// appending info to divs
);
}
}
});
if (isLast) countTheMovies();
};
function countTheMovies() {
$("#app").append("There are " + $(".movie").length + " movies.");
}
私の欠点のplunker:あなたはそれが成功した場合に実行したい場合はhttps://plnkr.co/edit/0mhAUtEsaOUWhkZMJqma?p=preview
が重複する可能性を試してみてください(http://stackoverflow.com/questions/14220321/how-do-私の返信 - 非 - 非同期呼び出しからの返信) –
3者は無意味です、このinsateadを使用してください.. 'getMovieInfo(タイトル、年、(i === data.length - 1))' –
ありがとうショートカット@Pamblam – dedaumiersmith