我一直试图弄清楚这个问题背后的基本原理,我一直在努力去理解为什么结果是这样的.我将解释我理解的一切,我希望有人能够填补我的空白.
想象一下你有一堂课:
public class Point {
public boolean equals(Object o) {
if (o == null || (!(o instanceof Point)) { // Let's call this method 1
return false;
}
Point other = (Point) o;
return x == other.x && y == other.y;
}
public boolean equals(Point p) { // Let's call this method 2
if (p == null) {
return false;
}
return x == p.x && y == p.y;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们创建以下对象:
Object o = new Object()
Point p …Run Code Online (Sandbox Code Playgroud) 我有一个API调用,它使用回调迭代返回的JSON,然后我想将结果输出到控制台.问题是我觉得即使这应该异步进行,我也在使用then()调用,我认为它会等待返回并正确打印出来.但是在第一次调用时,它会在控制台中打印出一个空数组,然后在第二个按钮上按下它会正确记录数组.
function getPrice() {
var valueArray = [];
var symbol = document.getElementById("symbol_input").value;
var url = "https://api.iextrading.com/1.0/stock/" + symbol + "/chart"
fetch(url)
.then(res => res.json())
.then(function(res) {
res.forEach(element => {
valueArray.push(element);
});
})
.then(console.log(valueArray))
.catch(err => console.log(err));
}Run Code Online (Sandbox Code Playgroud)
<input type="input" id="symbol_input">
<button id="priceButton" onclick="getPrice()">Get Price</button>Run Code Online (Sandbox Code Playgroud)