如何在javascript函数中动态加载jQuery,调用另一个函数,并返回该函数';返回值是多少?

如何在javascript函数中动态加载jQuery,调用另一个函数,并返回该函数';返回值是多少?,javascript,jquery,Javascript,Jquery,我有一个使用jQuery的函数。我需要用JavaScript动态注入jQuery,并让该函数返回该函数的返回值。我想做一些像 (function(){ var jQueryLoaded = false; var returnValue; if (!window.jQuery) { var script = document.createElement('script'); script.type = 'text/javascript';

我有一个使用jQuery的函数。我需要用JavaScript动态注入jQuery,并让该函数返回该函数的返回值。我想做一些像

(function(){
    var jQueryLoaded = false;
    var returnValue;
    if (!window.jQuery) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
        script.onreadystatechange= function () {
            if (this.readyState == 'loaded' || this.readyState == 'complete')
                onJQueryLoaded();
        };
        script.onload = onJQueryLoaded;
        document.getElementsByTagName('head')[0].appendChild(script);
    }
    else {
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
        return returnValue;
    }
    function myJQueryFunction() {
        // do something
    }
    function onJQueryLoaded() {
        if (jQueryLoaded)
            return;
        jQueryLoaded = true;
        var $ = jQuery;
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
    }
    while (typeof(returnValue) == 'undefined'); // wait until onJQueryLoaded returns
    return returnValue;
})();
function myJQueryFunction(funcPoint) {
        funcPoint();
    }

returnValue = myJQueryFunction(function() {return true;});
但是
onjqueryladed
while
循环期间不会被调用


有没有办法让我的基函数等待调用
onjqueryladed
后再返回?

尝试设置计时器/间隔,并进行检查。这将完成您所寻找的,只要执行一个依赖于时间的回调(即加载、渲染、下载、上载)。
或者将它放在jQuery本身内部。

您需要将函数指针传递到myJQueryFunction()中

然后可以在此方法中调用该函数

差不多

(function(){
    var jQueryLoaded = false;
    var returnValue;
    if (!window.jQuery) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
        script.onreadystatechange= function () {
            if (this.readyState == 'loaded' || this.readyState == 'complete')
                onJQueryLoaded();
        };
        script.onload = onJQueryLoaded;
        document.getElementsByTagName('head')[0].appendChild(script);
    }
    else {
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
        return returnValue;
    }
    function myJQueryFunction() {
        // do something
    }
    function onJQueryLoaded() {
        if (jQueryLoaded)
            return;
        jQueryLoaded = true;
        var $ = jQuery;
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
    }
    while (typeof(returnValue) == 'undefined'); // wait until onJQueryLoaded returns
    return returnValue;
})();
function myJQueryFunction(funcPoint) {
        funcPoint();
    }

returnValue = myJQueryFunction(function() {return true;});
语法可能需要更多的研究,因为这只是我的想法

编辑

这样的场景可能更相关

var func = function() {return true;};

...stuff......

function myJQueryFunction(funcPoint) {
        funcPoint();
    }

returnValue = myJQueryFunction(func);
更多编辑

根据我下面的评论,如果您想要在JQuery加载(就绪)后启动一个函数,那么您需要使用JQuery就绪函数

$(document).ready(function() {do you stuff here});

当然,你可以用类似于

加载jquery脚本

(function() {
    if (!window.jQuery) {
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
        }
})();
从这里使用jquery“onload”函数

$(function() { console.log("jquery is now loaded"); });

这并没有回答问题:它只是调用另一个函数来获取返回值;我在问如何等待
myJQueryFunction
被调用。你不能“等待”直到一个函数以你所要求的方式被调用。Jquery/JavaScript不是非对称的,它甚至没有被编译。它是一种脚本语言,不支持并发。等等,你想在Jquery加载后调用函数吗?如果需要$(document).ready(function(){….});计时器将只调用另一个函数;我需要原始的基函数来返回
myJQueryFunction
的返回值(或true)。