事件后退出功能

Exit function after events

本文关键字:功能 退出 事件      更新时间:2023-09-26

我想有自己的初始化函数,我希望它只在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编程是关于拥抱事件驱动的本质。我强烈推荐第二个例子