0
私は間違った値を返す不思議なPromiseの動作をしています。PromiseがJavaScriptで適切な値を返さない
var years = []
$.getJSON('https://omdbapi.com?t=titanic&apikey=thewdb')
.then(function(movie){
years.push(movie.Year)
return $.getJSON('https://omdbapi.com?t=shrek&apikey=thewdb')
})
.then(function(movie){
years.push(movie.Year)
console.log(years) // ["1997", "2001"]
})
console.log(years) // [] return at the beginning
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
空の配列は、最初の場所に戻されているコードの端からである - 私には奇妙です。あなたはこれを説明する必要がありますか?ありがとう、
getJsonは非同期です。 console.logは、getJSONが要求を解決して応答を処理する前に発生します。約束事のポイントは、将来*終了する*非同期ロジックです。約束事にコールバックを添付することで、それが取得されたときの応答*を処理できます。その時点までコードが実行されることはありません。 – Taplar
Ajaxは**非同期です** ...最後の 'log()'はリクエストが完了する前に発生します – charlietfl
Thanks Taplar and charlietfl。私は非同期についてより詳しく説明します。 –