Состояние обещания $ .get разрешено, но done () не вызывается - PullRequest
0 голосов
/ 31 мая 2018

У меня есть сценарий, когда иногда обещание 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 
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...