0

我有一个函数通过首先用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 ;
},
4

1 回答 1

1

您无法通过单独修改函数来解决此问题,您必须将“my_msgcheck”添加到模块的定义调用中。

如果您真的只想在该函数中加载它,另一种选择是使用回调。但这可能是错误代码结构的标志。

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) {
    // ...
});
于 2013-04-18T16:54:50.120 回答