when apply を使った並列化の記事はよくでてくるのですが
その終了後に同期処理をいれる方法がまったくでてこなくて困っています
function f() { for(let i = 0; i < 10; i++) { var deferredFunc = function(){ return $ajax(...).then( function() {}, function() {} ); }; deferredArray.push(deferredFunc()); } $.when.apply(null, deferredArray).then( function() {}, function() {} ); } f(); console.log('test');
これで最後のメッセージの終了をまってから test を表示するにはどうすればいいんでしょうか
f().then(() => console.log('test'));
でもだめでした
省略の方法がいまいちで要領をえません。最低限動くものを表記できませんか?
jQueryのバージョンを記載してください。
ajax の戻り処理が別ファイルの巨大なコードになっていて全部はりきれないです javascript は sleep もないみたいだしどうやって非同期をシミュレートする短いサンプルコードを用意すればいいんでしょうか… ajax('google.com') に function を () => null とかにおきかえれば動くとは思いますが一瞬で終わって終了をまててるかどうかはわからない気がします
再現しないです。本当にajaxが一瞬で返ってきているということは?
んー 他の人がかいたコードなのでどの処理に時間がかかってるかもよくわかってないんですが、とにかくどこかでデータベースの更新を行っていてそのログが10秒以上流れ続けるんですが console.log だけは一瞬で表示されてしまいます。そのデータベース更新結果を使った処理をかきたいので結果を待ってから実行したいですが… メソッドの中身すべてを理解しないとこの質問内容の構造だけでは終了後に処理をするのは無理なのでしょうか… java や C で fork thread は使ったことがあるんですが中身を理解しなくても join 後に処理をかけばまってくれてたので JS でもできるものかと思って質問したんですが…
サンプルコードを動くようにしようと試行錯誤してみたんですが $.ajax がスタンドアロンだとエラーをはくみたいで無理そうです… サンプルがすでに正確なコードじゃないので答えようがないですよね… あまり時間をかけられない案件なのであきらめてデータベースに終了フラグを追加してそれを無限ループでよみにいくようにします コメントしていただいたのに申し訳ありませんでした
回答2件
あなたの回答
tips
プレビュー