jsにおけるforループと非同期コールバック関数の実行順序の問題
1274 ワード
前回のブログ「HTML 5の新機能localstorageを利用してユーザーデータをクライアントに一時保存し、後でアップロードする」でforループについて言及しましたが、今日はforループが機能しないことがわかりました.最終postリクエストは1回のみ実行され、コードは以下の通りです.
ネットで調べると匿名関数でパッケージを閉じる方法がありますが、試してみると解決できません.
解決策はまだ分からないが、機能の正常な使用に影響を与えないで、毎分1回実行すれば、需要を満たすことができる.
for(i=localStorage.length-1;i>=0;i--){// localstorage
local_key=localStorage.key(i);
if(local_key.length>8 && !isNaN(local_key))//key 8
{
local_val=localStorage.getItem(localStorage.key(i));
local_array=local_val.split(",");//
$scope.local_ygbh = local_array[0];
$scope.local_khbh = local_array[1];
local_post($scope.local_ygbh,$scope.local_khbh,local_key);// ,
};
}
function local_post(a,b,j)
{
//POST
myHttp.post({
req : {
service : 'P9999999',
bex_codes : 'insertzxthlskandkhmx',
v_ygbh : a,
v_khbh : b
}
}).then(function(data) {
var info = data.msg;
if (!isNaN(info[0].code)) {// ,
localStorage.removeItem(j);//
}
});
}
ネットで調べると匿名関数でパッケージを閉じる方法がありますが、試してみると解決できません.
for(var i = 0; i < 10; i++) {
(function(e) {
setTimeout(function() {
console.log(e);
}, 1000);
})(i);
}
解決策はまだ分からないが、機能の正常な使用に影響を与えないで、毎分1回実行すれば、需要を満たすことができる.