我有以下方法应返回true或false:
theMethod() {
const httpRequest = new XMLHttpRequest();
httpRequest.open("GET", 'http://someurl.com', true);
httpRequest.send();
httpRequest.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
return true;
} else {
return false;
}
};
}
在两种情况下都返回“ undefined”
我该如何解决?
答案 0 :(得分:1)
thisMethod
将始终返回undefined
,因为其中没有return
语句。它所做的只是发出一个Ajax请求,该请求当然是异步的-它只会在返回{em> {em1} {em}之后完成。 (或者没有,视情况而定。)
您在该Ajax调用上附加了一个回调函数-通常,为了能够对结果执行任何操作,实际上是必需的。 那个函数是返回thisMethod
或true
的函数,以指示Ajax是否成功。但是false
本身不返回任何内容。
请注意,仅返回一个值的回调实际上不会产生任何可观察到的效果-因为您对返回值不做任何事情。通常,您不需要这样的回调,您只需对响应进行做(通常将其呈现在页面上的某个位置,或将其记录到控制台)。