У меня есть сценарий, когда иногда обещание done()
не выполняется.Я сделал некоторую отладку и обнаружил, что состояние обещания разрешено, readyState = 4
и status = 200
.
Обещание уже сохранено в глобальной переменной, поэтому, когда происходит такой сценарий, я делаю следующий код, и в консоли ничего не регистрируется.
код разбивается на два файла
первый файл инициирует обещание conf.js
var conf = (function() {
var __globalConfigYaml = join(baseHref, "/conf.yaml?time=" + Date.now()),
__yamlPromise = $.get( __globalConfigYaml);
var members = {
yaml : {
promise : __yamlPromise
}
};
__yamlPromise.done(function(data){
try{
var YamlObject = YAML.parse(data.trim());
$.extend(members.yaml.conf, YamlObject);
}catch(e){
console.log(e);
console.log('failed to parse yaml file!');
}
});
return members;
})();
второй файл - main.js, который имеет обратный вызов после разрешения обещания
$(document).ready(function() {
$.when(conf.yaml.promise).done(function () {
// this code not always executed
});
});