dポイントプレゼントキャンペーン実施中!

setTimeoutで、止まらない現象が起きています。
アップロードしたcsvファイルを、ローダーでデータベースに流し込みたいのですが、このまま実行すると、アップロードが終わらないうちに、ローダーが走ってしまいます。

アップロードの「testUpload.cgi」にsleepを入れてみたのですが、ダメでした。
sleep自体は「testUpload.cgi」のみ(setTimeout(fncLoader(),10000);をコメントアウトして)実行すると、ちゃんと止まってくれます。

ご存知の方がいらっしゃったら教えて下さい。

xxxx.jsの内容
---------------------------------------------------------
function fncTest(){
w_form = document.f_login;
if(window.confirm("アップロードしますが、よろしいですか?")){
//アップロード
w_form.action = "/cgi-bin/testUpload.cgi";
setTimeout(fncLoader(),10000);
return true;
} else {
return false;
}
}

function fncLoader(){
alert("Loader");
//ローダー
w_form.action = "/cgi-bin/testsqlldr.cgi"
return true;
}

A 回答 (2件)

>実際にはどのようにファンクションを指定すれば良いのでしょうか?



少なからぬ情報を提示しているのに、調べもせずに
それを聞くってのは非常にまずいんじゃないの?

setTimeout("fncLoader()",10000);とか
setTimeout(function(){fncLoader()},10000);とか

この回答への補足

解決しました。

やはり原因はyambejpさんのおっしゃるとおり、非同期にありました。
cgiが2つに分かれているため、同期がとれなくなっていました。
単純ですが、1つのcgiに処理を纏める事によって解決致しました。
ありがとうございました。

補足日時:2008/12/08 15:08
    • good
    • 0
この回答へのお礼

すみません。
確かにおっしゃるとおりです。

>setTimeout("fncLoader()",10000);とか
setTimeout(function(){fncLoader()},10000);とか

やってみましたが、function fncLoaderはコールされませんでした。

お礼日時:2008/12/08 13:19

どのような処理を期待しているかわかりませんが・・・


setTimeout()自体は非同期処理なので、思ったのと違う処理が
ある可能性はありますね・・・

ちなみに
setTimeout(fncLoader(),10000);
自体は文法的におかしいですよね?
ダイレクトに関数を指定できません。
    • good
    • 0
この回答へのお礼

>setTimeout(fncLoader(),10000);
自体は文法的におかしいですよね?
ダイレクトに関数を指定できません。

ありがとうございます。
すみませんが、余りにも無知なので、ダイレクト関数??状態です。

実際にはどのようにファンクションを指定すれば良いのでしょうか?
教えて頂ければと思います。

お礼日時:2008/12/08 11:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!