현재 자바 스크립트에서 비동기 호출 쌍을 생성하려고하고 있지만 올바른 순서로 가져올 수 없습니다.약속을 사용하여 데이터 집합 생성
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 흠, 새로운 약속에서 for 루프를 래핑하려고했지만 "해결 (쌍)"을 반환했습니다. 그것도 작동하지 않았다 – WhosSu
당신은'Promise.all'을 찾고 있습니다. 루프를 사용하여 각각의 개별 결과에 대해 하나의 약속 배열을 만듭니다. – Bergi