Promise不会在JavaScript中返回正确的值

时间:2017-12-07 18:34:07

标签: javascript jquery es6-promise

我有一个奇怪的Promise行为,返回不正确的值。

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>

首先返回的空数组是从代码的末尾开始的 - 这对我来说很奇怪。你能解释一下吗?谢谢,

1 个答案:

答案 0 :(得分:0)

第一个console.log打印[]的原因是因为$ .getJSON和.then()函数尚未执行。这称为异步代码,意味着事物可能无法按照它们在代码中出现的顺序执行。