我有一个问题:
我的用户谷歌repacha和我有一个服务器端加载JS数据。我使用recacha的方式是
<script src="https://www.google.com/recaptcha/api.js?onload=onScriptLoaded&render=explicit"></script>
这意味着我在ScriptLoaded上等待这个函数,然后手动渲染capchas。
我还将此包含在我的头标签中
<script type="text/javascript" src="/profile/js"></script>
返回类似的东西
userData = {};
userData.id = 1;
userData.name = 'koko';
现在这是可以的,但我想做的是某种"promises?",基本上我正在寻找类似的语法
$.when( onScriptLoaded, $.getScript( "/profile/js" ) ).done(function( a1, a2 ) {
console.log(arguments);
});
这样我就可以输入我所有的回调函数、加载等。然后初始化我的JS类(因为我使用了这些回调的值)
然而,在这种情况下,我得到一个错误
Uncaught ReferenceError: onScriptLoaded is not defined
因为我还没有解释"onScriptLoaded"是什么。
所以。。有没有一种方法可以使这种语法在我的中起作用
谢谢!
您可以尝试类似的东西
//a promise that will be resolved once the googe captcha code is executed
var captchaPromise;
(function () {
var deferred = jQuery.Deferred();
//the onload callback for google captcha
window.onScriptLoaded = function (data) {
console.log('looks like the captcha is complered now', arguments);
//once the captcha callback is invoked resolve the deferred
deferred.resolve(data);
}
captchaPromise = deferred.promise();
})();
//use the when method with the captch promise and ajax promise
$.when(captchaPromise, $.getScript("/profile/js")).done(function (a1, a2) {
console.log('when callback');
console.log(arguments);
});
演示:Fiddle