> 웹 프론트엔드 > JS 튜토리얼 > for 루프에서 비동기 요청의 순서가 일관되지 않는 문제를 해결합니다.

for 루프에서 비동기 요청의 순서가 일관되지 않는 문제를 해결합니다.

angryTom
풀어 주다: 2019-12-17 16:56:05
앞으로
3062명이 탐색했습니다.

for 루프에서 비동기 요청의 순서가 일관되지 않는 문제를 해결합니다.

for 루프에서 비동기 요청 순서가 일관되지 않는 문제 해결

직장에서 문제가 발생했습니다

For 루프를 사용하고 루프된 ID로 두 번째 요청을 합니다

이로 인해 문제가 발생합니다

요청 결과 반환 순서가 일관되지 않습니다

이유: 비동기 요청은 콜백 이벤트를 마이크로태스크 이벤트 대기열에 넣고 매크로태스크가 실행된 후에 마이크로태스크가 실행됩니다. 자세한 내용은 이벤트 대기열 메커니즘을 참조하세요

[관련] 추천 과정: JavaScript 비디오 튜토리얼]

해결책:

map 메서드를 통해 루프 요청을 만듭니다.

비동기 요청 메서드를 캡슐화하고 promise

를 반환합니다. 이렇게 하면 여러 개의 배열이 반환됩니다. promise

through promise.all() 메소드는 promise를 새로운 promise 인스턴스

// 通过Promise把所有的异步请求放进事件队列中
getInfo(item ,index) {
    const ms = 1000 * Math.ceil(Math.random() * 3)
    return new Promise((resolve,reject) => {
        setTimeout(() => {
           axios.get(id).then((result) => {
               resolve(result)
           })
        }, ms)
    })
}

// 返回多个promise
let promise = arr.map((item,index) = > {
    arr.forEach((item, index) => {
        return getInfo(item, index)
    })
})
// 对返回的promise数组进行操作
Peomise.all(promise).then((allData) => {
    arr.forEach((item, index) => {
        // ......
    })
})
로그인 후 복사

로 패키지화합니다. 이 글은 js tutorial 칼럼에서 가져온 것입니다. 배우신 것을 환영합니다!

위 내용은 for 루프에서 비동기 요청의 순서가 일관되지 않는 문제를 해결합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿