Ну, вы можете сделать это, сделав запрос синхронным, а не асинхронным. Это имеет неприятные побочные эффекты на пользовательский опыт просмотра, как правило, блокирует вещи во время запроса, но если вы установите третий аргумент 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
, так как это делает намного лучший UX:
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);
});
Эффективное веб-программирование заключается в том, чтобы принять его управляемый событиями характер. Я настоятельно рекомендую второй пример.