Мы можем написать функцию для проверки состояния вашего объекта xmlhttp:
var checkState = function(xmlhttp, callback) {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
callback(whatever, arguments, that, you, want, to, send);
} else {
// Check back again 1 sec later
setTimeout(checkState, 1000);
}
};
Тогда вы можете использовать его следующим образом:
checkState(xmlhttp, function(whatever, arguments, you, need) {
// the code here will be run when the readyState is 4 and the status is 200
});
Хотя две вещи:
- Функция checkState будет возвращаться независимо от readyState, поэтому убедитесь, что вы делаете только те вещи, которые зависят от нее, в обратном вызове, а не после.
- Если readyState и status никогда не получают желаемогозначения, вам не повезло (но вы могли бы расширить функцию, чтобы принять второй обратный вызов, который будет обрабатывать случай тайм-аута).