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) {
// ...
});