私はこのプロジェクトでasyncライブラリを使用しています。 1つの関数(下にコピーされています)には、2D配列を構築するネストループが含まれています。コールバックは、配列が完全に構築される前に呼び出されます。なぜこれが起こっているのかを理解し、ベストプラクティスについてもっと学びたいと思っています。この問題を解決する最良の方法は何ですか?非同期は、単に「反復が完了する前にコールバックが発生する
function getStopTimesForTrips() {
return Promise.all(
timeTable.listOfTripIds.map(function(id) {
return new Promise(function(resolve, reject) {
retrieveTimesByTrip(id, function(err, st) {
if (err) return reject();
resolve(
st.map(function(item) {
return item.arrival_time;
})
);
});
});
})
);
}
getStopTimesForTrips().then(function(arrival_times) { ... })
。 – choz
非同期関数のループのように見えますが、すべてコールするのを待たずにコールバックを呼び出します。 –