複数のget要求から配列を組み合わせて作成した新しい配列を返そうとしています。新しい配列はasync.eachSeries
async library関数内で正しく戻りますが、親関数は未定義を返します。関数内のasync.eachSeriesループ内の複数のget要求からの応答を返すにはどうすればいいですか?
私の理解では、親関数内の戻り値はasync.eachSeries()
(完了する前に)と同時に実行され、親関数はundefined
を返します。
var array_strings = [ “someUrl”, “someUrl”, “someUrl” ]
function get_forEachUrlString(base_url, array_strings) {
…
var combinedArray = [];
var mergedArray = [];
…
async.eachSeries(array_strings, function(item, done) {
…
$.get(bas_url+item, function(data) {
…
combinedArray.push(data)
done(); // stopping the async looping
mergedArray = [].concat.apply([], combinedArray); // Merging the array of combined arrays
});
}, function(err) {
if (err) {
throw err;
}
console.log("All requests are done");
console.log(mergedArray); // logs correct array
return mergedArray
});
console.log(mergedArray); // logs [] empty array
return mergedArray // Hoping this would return the newly created mergedArray
}
get_forEachUrlString(“someBaseUrl”, array_strings) // Attempting to return mergedArray
// this function tries to call the mergedArray, but returns undefined
function initialRender() {
…
console.log(merged) // returns undefined
}
私はasync.eachSeries機能によって生成される値を返すために、親機能get_forEachUrlString()
を取得する方法を探してきました。私はコールバックを実行する必要があると信じていますが、いくつかの異なる組み合わせを試した後、私はまだ困惑しています。
私が作成した新しい配列mergedArray
は、どのようにして関数get_forEachUrlString()
から戻ることができますか?
EDIT:get_forEachUrlString()
の戻り値をinitialRender()
にコールしようとしています。私の答えでこれをどのように修正したかを見てください。
'get_forEachUrlString'が値を返すようにする方法がありません - コールバックを使ってみてください –
@Jaromanda、そのコールバックをどうすればいいですか?彼らはまだ私のために少し混乱している、と私はこの1つの周りに私の頭を包むように見えることはできません。 – Jason