I need to ping to server and I need to sync data between server and tab.
setTimeOut crashes and freezes my tab.
What is the solution?
I need to to navigate some pages and some process will run parallel.
Databind in appery did not work in another page and appery could not give solution.
How may i manage setTimeOut properly so that this dont crash my system
/*
check business online offline per minute
/
var pingtimeout;
function ping_device_online()
{
/pingVar = setInterval(function() {
business_online_status();
}, 1000ping_duration);/
clearTimeout( pingtimeout);
business_online_status();
pingtimeout = setTimeout(ping_device_online,1000ping_duration);
}
/
*business online
*/
function business_online_status()
{business_id = localStorage.getItem("local_business_id");
offer_id = localStorage.getItem("local_offer_id");
status = '';
var ua = navigator.userAgent;
if( ua.indexOf("Android") = 0 )
{
try{Code: Select all
if(navigator.network.connection.type != Connection.NONE) { status = 'online'; $.ajax({ type: "POST", url: '[url=http://dev.eu.com.au/rest-api/server/online_offline]http://dev.eu.com.au/rest-api/server/...[/url]', data: { status:status, b_number : b_number, business_id:business_id, offer_id:offer_id }, success: function(data) { }//success });//ajax }//if } catch(err) { alert(err.message); }
}//if
}
//sec=1000;
//hour =sec605;
var sync_counter = 0;
var update_down = false;
var synctimeout;
function sync_up_down()
{
/syncupVar = setInterval(function() {
sync_up();
sync_down();
}, 1000sync_duration);*/
Code: Select all
clearTimeout(synctimeout);
if(sync_counter==11)
{
sync_counter=0;
}
else
{
sync_counter++;
}
try{
//up
if(sync_counter==0)
{
str_prepare_send_to_server("member");
}
if(sync_counter==1)
{
str_prepare_send_to_server("member");
str_prepare_send_to_server("lyl_member");
}
if(sync_counter==2)
{
str_prepare_send_to_server("member");
str_prepare_send_to_server("member_rewards");
}
if(sync_counter==3)
{
str_prepare_send_to_server("member");
str_prepare_send_to_server("member_tokens_points");
}
if(sync_counter==4)
{
str_prepare_send_to_server("member");
str_prepare_send_to_server("member_checkin");
}
if(sync_counter==5)
{
str_prepare_send_to_server("member");
str_prepare_send_to_server("activity");
}
//down
if(sync_counter==6)
{
sync_down_server_to_local("offer");
}
if(sync_counter==7)
{
sync_down_server_to_local("offer_images");
}
if(sync_counter==8)
{
sync_down_server_to_local("offer_rewards");
}
if(sync_counter==9)
{
//update to keep tarck
sync_down_server_to_local("offer_update_sync");
}
if(sync_counter==10 && update_down === true)
{
update_down = false;
load_checkin_images();
//main
load_items();
//main
load_offer();
}
}catch(err)
{
alert(err.message);
}
setTimeout(sync_up_down,1000*sync_duration);
}
/*
make str store in local and pass it to server
*/
function str_prepare_send_to_server(table_name)
{business_id = localStorage.getItem("local_business_id");
dataarr = [];
str = "";
db.transaction(function(tx) {
sql = "SELECT "+table_name+".* FROM "+table_name+" WHERE flag='1'";Code: Select all
tx.executeSql(sql, [],function(tx, results) { if ( results.rows.length=0) { for(var i=0;i< results.rows.length;i++) { dataarr[i]= JSON.stringify(results.rows.item(i)); } str = JSON.stringify(dataarr); var ua = navigator.userAgent; if( ua.indexOf("Android") = 0 ) { try{ if(navigator.network.connection.type != Connection.NONE) { if(str.length0) { $.ajax({ type: "POST", url: '[url=http://dev.eu.com.au/rest-api-sync/sync/up_data]http://dev.eu.com.au/rest-api-sync/sy...[/url]', data: { sync_up:str, table_name:table_name, b_number : b_number, business_id:business_id }, success: function(data) { update_flag(table_name,results); } }); } } } catch(err) { alert(err.message); } } }//if });
});
}
function update_flag(table_name,results)
{
Code: Select all
db.transaction(function(tx) {
if ( results.rows.length0)
{
for(var i=0;i< results.rows.length;i++)
{
row = results.rows.item(i);
id_inc = row['id_inc'];
sql = "UPDATE "+table_name+" set flag='0' WHERE id_inc='"+id_inc+"'";
tx.executeSql(sql);
}
}
});
}
function sync_down_server_to_local(table_name)
{
Code: Select all
business_id = localStorage.getItem("local_business_id");
offer_id = localStorage.getItem("local_offer_id");
var ua = navigator.userAgent;
if( ua.indexOf("Android") = 0 )
{
if(navigator.network.connection.type != Connection.NONE)
{
try{
str ="";
$.ajax({
type: "POST",
url: '[url=http://dev.eu.com.au/rest-api-sync/sync/up_data]http://dev.eu.com.au/rest-api-sync/sy...[/url]',
data: {
sync_up:str,
table_name:table_name,
b_number : b_number,
business_id:business_id,
offer_id:offer_id
},
success: function(data) {
//no_update protect to update few tables
// update at server side
if(data !='no_update')
{
var obj = JSON.parse(data);
db.transaction(function(tx) {
sql = "DELETE from "+table_name;
tx.executeSql(sql);
sql_insert_values = obj[0];
for(var j=1;j<obj.length;j++)
{
sql = sql_insert_values + obj[j];
tx.executeSql(sql);
}
});//db
update_down = true;
}
}//success
});//ajax
}
catch(err)
{
alert(err.message);
}
}//Connection
}//Android
}