Javascript Jquery问题与$.when有关
我正在使用一个回调函数,它将检查60秒。如果文件可用,则将返回true,否则将返回false。我在ajax调用后调用的回调函数。。代码如下:Javascript Jquery问题与$.when有关,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用一个回调函数,它将检查60秒。如果文件可用,则将返回true,否则将返回false。我在ajax调用后调用的回调函数。。代码如下: $.ajax({ type: '..', url: '..', data: '..', success: function(data) { window.loadFile(data); } }) window.loadFile = function(filePath) { // I'm gettin
$.ajax({
type: '..',
url: '..',
data: '..',
success: function(data) {
window.loadFile(data);
}
})
window.loadFile = function(filePath) { // I'm getting the data. Now passing to call back function
$.when(window.waitTillFileExistsAndLoad(filePath)).done(function(data) {
alert(data) // here data is giving me undefined..
});
}
var timer = 0;
window.waitTillFileExistsAndLoad = function(fileName) {
var checkFile;
return $.get(fileName, function(data) { // If file found..
timer = 0;
return true;
}).error(function() { // If file not found..
timer += 1;
if(timer == 30) {
timer = 0;
clearTimeout(checkFile);
return false;
} else {
console.log('error occured');
checkFile = setTimeout(function() {
window.waitTillFileExistsAndLoad(fileName);
}, 2000);
}
});
}
问题是当我使用
$.when()
时,它会给我未定义的。请告诉我我的代码出了什么问题 您正在调用您的方法,但忘记返回结果-因此它是未定义的(无返回值)。Jamiec,我在waitTillFileExistsAndLoad()方法中将结果返回为true或false。。这有什么不对吗?千万不要使用done
/fail
/error
作为返回的回调-它们不会连锁。始终使用then
和catch
。但请注意,catch
直到第3版才添加到jQuery api中。正在使用哪个版本的jQuery?@B77-您的setTimeout
中的版本不返回结果(并且,由于它位于回调本身中,因此无法返回结果)。