requirejs загружает мой плагин jquery async

У меня есть функция, которая вызывает функцию плагина jquery, сначала загружая плагин с RequireJS, проблема в том, что функция плагина внутри requirejs выполняется только после того, как моя функция уже вернулась, поэтому hasMessageParent всегда возвращает ноль. Я действительно запутался, потому что раньше это работало нормально, и я не знаю, что изменилось и сломалось. Как я могу это исправить, чтобы myMsg был настроен на возврат функции перед продолжением?

hasMessageParent: function() {
    var myMsg = null;
    var ctrl = '#myDiv';
    require(["my_msgcheck"], function() {
        // this gets executed after the return already happened, it returns true
        myMsg = $(ctrl).msg_check('hasMessage');
    });
    // this always returns null because the require jquery plugin function is executed after the return already happened
    return myMsg ;
},

1 ответ

Решение

Вы не можете исправить это, изменив только одну функцию, вы должны добавить "my_msgcheck" к вызову define вашего модуля.

Другой вариант - использовать обратный вызов, если вы действительно хотите загрузить его только внутри этой функции. Но это может быть признаком плохой структуры кода.

var hasMessageParent = function(callback) {
    var myMsg = null;
    var ctrl = '#myDiv';
    require(["my_msgcheck"], function() {
        // this gets executed after the return already happened, it returns true
        myMsg = $(ctrl).msg_check('hasMessage');
        callback(myMsg);
    });
};
hasMessageParent(function (msg) {
    // ...
});
Другие вопросы по тегам