我正在通过XMLHttpRequest
检查某个本地URL上的文件是否存在,这是对文件系统的一种解决方法。使用下面描述的pingFile
函数,我会尝试查看给定文件的200
或404
,并根据该结果执行某些操作。
function pingFile(theURL, callback)
{
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (this.readyState === this.DONE) {
if (callback !== null) {
return callback(this.status);
} else {
return this.status;
}
}
};
req.open("HEAD", theURL);
req.send();
}
var q = pingFile('images/image1.png', null);
但是,当我检查q
的值时,它总是undefined
。我想,我在这里遗漏了一些XHR的异步特性,但是我无法找到等待的地方,以便this.status
具有我期望的文件检查值。< / p>
编辑:我已尝试在return 4;
之后添加req.send();
,并且无论文件是否为q
,都始终为4
提供值status
那里。
如何从其所在的函数中获取XMLHttpRequest
的{{1}}值?
答案 0 :(得分:0)
对于异步操作,您可以使用回调或承诺。这是一个回调的简单示例:
(function () {
function pingFile(theURL, success, error) {
var req = new XMLHttpRequest();
req.onload = function (e) {
if (this.status === 200) {
success(e);
} else {
error(e);
}
};
req.open("HEAD", theURL);
req.send();
}
function fileExist(e) {
alert('File exist!');
}
function fileNotExist(e) {
alert('File does not exist!');
}
pingFile('images/image1.png', fileExist, fileNotExist);
}());