при работе с асинхронными XHR-запросами в Javascript я часто задаюсь вопросом, существуют ли условия, когда браузер может вызывать обратный вызов onReadyStateChange.Если бы их не было, возникли бы некоторые проблемы, как показано в следующем примере:
var state = -1;
doAsyncXhrReqeust("foo.bar", function() {
state = 1;
});
function doStateDependendAction() {
if(state === 1)
alert("file is available");
// if the callback above was called at this point, nothing would happen
else if(state === -1)
alert("file isn't available");
};
function doAsyncXhrRequest(url, callback) {
// simple AJAX-helper-function
};
Как видите, doStateDependendAction ничего не делает, если состояние изменяется между двумя операторами if, которые проверяютсостояние.
Я знаю, что в этом случае я могу обойти это, назначив состояние локальной переменной перед проверкой значения.
Так что вопрос в том, нужно ли мне всегдапозаботься об этом.Мой вопрос также относится к другим событиям, таким как взаимодействие с пользователем и веб-работники.
С уважением,
Uli