事件后退出功能
Exit function after events
我想有自己的初始化函数,我希望它只在onload事件后退出,我能做些什么?
var qqq=0;
function init(){
var requestClient= Ti.Network.createHTTPClient();
requestClient.open('GET','https://mysite.com/api/123/id/5/friends');
requestClient.onload = function() {
alert('loaded');
};
requestClient.send();
};
init();
alert(qqq);
嗯,您可以做到这一点,通过使请求同步而不是异步。这对用户的浏览体验有不愉快的副作用,倾向于在请求期间锁定东西,但是如果将open
的第三个参数设置为false
,它将使其同步而不是异步:
var qqq=0;
function init(){
var requestClient= Ti.Network.createHTTPClient();
requestClient.open('GET','https://mysite.com/api/123/id/5/friends', false);
// Here------^
requestClient.onload = function() {
alert('loaded');
};
requestClient.send();
};
init();
alert(qqq);
同步请求将使页面上的JavaScript执行(至少,在许多浏览器中不仅仅是JavaScript)戛然停止,直到网络操作完成。
但是通常的做法是让您的init
接受您从onload
处理程序内调用的回调,因为这使得更好的用户体验:
var qqq=0;
function init(callback){ // <== Accept a callback
var requestClient= Ti.Network.createHTTPClient();
requestClient.open('GET','https://mysite.com/api/123/id/5/friends');
requestClient.onload = function() {
alert('loaded');
callback(); // <== Call the callback
};
requestClient.send();
};
init(function() { // <== Pass the callback into `init`
alert(qqq);
});
有效的web编程是关于拥抱事件驱动的本质。我强烈推荐第二个例子
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 弹出窗口出现,然后退出
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 自定义HTML5视频控件-退出按钮不会启动全屏切换功能
- 返回时退出功能
- 鼠标退出时恢复功能
- JavaScript 退出弹出功能在 Chrome 和 IE 中无法正常工作
- 如何退出点击功能
- 如何在鼠标退出时删除 JS 悬停功能
- jQuery Scroll-在进入/退出滚动区域时触发一次功能
- 如何在鼠标退出功能完成后使切换的标题保留
- 事件后退出功能
- 将更改、鼠标向上、鼠标向下、鼠标退出、向上键和向下键组合到一个功能中