私は現在、javascriptで非同期呼び出しのペアの配列を生成しようとしていますが、正しい順序で取得できないようです。約束のあるデータセットを生成
generateDataPoints: function (iterable, source, arg) {
let pairs = []
let prevTime = 0
for (let index in iterable) {
let event = iterable[index]
getTime(event.valueOf()).then(function (time) {
query(source[arg], event.valueOf()).then(function(val) {
if (time !== prevTime) {
prevTime = time
pairs.push([time, val])
console.log(pairs) // This works as expected but only happens after the program returns
} else {
Promise.resolve()
}
})
})
}
return Promise.resolve(pairs)
}
問題は、私が戻った後に "pairs.push .."コマンドが発生することです。私は正確に何がうまくいかないのか、どのようにこのプロセスを同期させることができるのか理解できません。どんな助けもありがとうございます。
だから...あなたは確かにあなたのコードに約束を導入しましたが、あなたがそれをしたことで何もしなかったという約束は返されません作業が完了するまで解決してください。 –
@KevinB Hm、私は新しいPromiseでforループをラップしようとしましたが、 "resolve(pairs)"を返しました。それでもどちらもうまくいかなかった – WhosSu
あなたは 'Promise.all'を探しています。ループを使用して、個々の結果ごとに1つの約束事を作成します。 – Bergi