我有一个函数,通过首先使用 RequireJS 加载插件来调用 jquery插件函数,问题是requirejs中的插件函数只有在我的函数已经返回后才执行,所以hasMessageParent总是返回null。我真的很困惑,因为之前工作正常,我不知道有什么变化和破坏。我如何修复,以便在继续之前将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 ;
},
答案 0 :(得分: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) {
// ...
});