两个javascript函数,第二个等待第一个使用getScript从外部URL检索值
Two javascript functions, the second one waits for the first to retrieve a value using getScript, from an external URL
也许你可以用一种优雅的方式将两个函数链接在一起。
- 第一个使用"getScript"从外部 URL 检索值。
- 第二个,等待第一个函数。 获取该值并执行随之而来的东西。
这是我尝试过的,除了等待部分(他们最难看)之外,一切都应该工作:)
为了更好地理解,我已经注释了代码:
/**
* Test Class.
*/
var Test = function() {
var cookieEmail;
this.init = function() {
var script = 'http://www.script.com';
jQuery.getScript(script, function(){
cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
}
}
this.init2 = function(){
// I want to do something with the variable "cookieEmail", after it has been retrieved using getScript.
cookieEmail = cookieEmail.toLowerCase();
}
}
jQuery(document).ready(function(){
var test = new Test();
test.init();
// I need a way to wait for -- test.init -- getScript function to retrieve the ---cookieEmail--- value.
// When cookieEmail's value has been retrieved, I want to be able to call:
test.init2();
});
好吧,它不会等待,因为getScript
是一个异步调用,所以你应该修改init()
接受回调函数,然后在该回调中运行init2
:
this.init = function(callback) {
var cookieEmail;
var script = 'http://www.script.com';
jQuery.getScript(script, function(){
cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
callback(cookieEmail);
}
}
//Modify init2 to accept a param
this.init2 = function(cookieEmail){
现在您可以执行以下操作:
test.init(function(data) {
init2(data);
}
我会将回调传递给init
函数,该回调将在getScript
成功执行后执行。 像这样:
var Test = function() {
var cookieEmail;
this.init = function( callback ) {
var script = 'http://www.script.com';
jQuery.getScript(script, function(){
cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
callback();
}
}
this.init2 = function(){
// I want to do something with the variable "cookieEmail", after it has been retrieved using getScript.
cookieEmail = cookieEmail.toLowerCase();
}
}
jQuery(document).ready(function(){
var test = new Test();
test.init( function() { test.init2(); });
});
来自 AJAX(包括getScript
JSONP)的响应始终是异步的。所以使用承诺模式:
var test = {
init: function() {
var script = 'http://www.script.com';
return jQuery.getScript(script).then(function(){
return typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
});
},
init2: function(promise){
return promise.then(function(cookieEmail) {
// do something with `cookieEmail` when it has arrived
return cookieEmail.toLowerCase();
});
}
};
test.init2(test.init());
相关文章:
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 如何从外部页面激活非默认引导选项卡
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何从外部url寻址数据
- 从外部函数渲染后更改ReactJS类的状态
- 使用ajax长轮询从外部API更新页面上的响应
- 在选择更改时更改从外部javascript生成的flash播放器
- 从外部js文件编辑现有的谷歌地图
- CkEditor复制/粘贴实现-从编辑器复制和从外部编辑器复制
- Javascript从外部站点获取html
- 如何在从外部连接时将外部文件包含到node-js项目中
- GWT:可以从外部JavaScript而不是JSNI调用Java方法吗
- 访问模块.从外部文件导出
- 从外部 txt 加载阵列
- 无法让 javascript 从外部文件工作
- 如何检查该函数是否从外部js文件调用
- 从外部 js 脚本创建元素并插入到 html 中
- 从外部函数(数组)了解返回函数(x)
- 主干从外部json填充集合
- 两个javascript函数,第二个等待第一个使用getScript从外部URL检索值