node.jsで同期処理をしたいと考えています。
node.js(javascript)初心者ですので変な質問及び理解が足りていないかもしれませんのでご了承下さいませ。
async.seriesを利用すると同期処理(上から順番にプログラムを回したい)が出来るのかと思ったのですがAPIの処理が上手くいきません。
この様にすると良いなど御座いましたらご指摘頂けると幸いです。
現在のコード
var async = require('async'); async.series([ function A_1(callback) { console.log("A_1"); request(options_A1, callback_A1); #<=APIを利用してwebからデータ取得しています。 callback(null); }, function A_2(callback) { console.log("A_2"); request(options_A2, callback_A2); #<=APIを利用してwebからデータ取得しています。 callback(null); }, function A_3(callback) { console.log("A_3"); request(options_A3, callback_A3); #<=APIを利用してwebからデータ取得しています。 callback(null); }, function A_4(callback) { console.log("A_4"); request(options_A4, callback_A4); #<=APIを利用してwebからデータ取得しています。 callback(null); } ], function(err){ console.log('ALL Complete.'); });
各request(option, callback) の所にAPIを利用したデータ取得の処理が入ります。
上記コードの実行結果は
A_1 A_2 A_3 A_4 ALL Complete. #↑ここまでは順番に処理されます。 #以下はAPIの順番ではなく反応順?に返ってきます。 A_2のAPI A_4のAPI A_1のAPI A_3のAPI
求めている実行結果は
A_1 A_1のAPI A_2 A_2のAPI A_3 A_3のAPI A_4 A_4のAPI ALL Complete.
となります。
ALL CompleteしたらDBなどに取得したAPIのデータを保存をしたいと考えています。
現状ですとAPIのデータ取得が完了前にALL Completeのまで進んでしまいデータ保存がうまくいかないです。(正確には保存するデータが何もない。)
何らかの方法で同期処理が出来ればなーと考えています。
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/12 17:37