이 문제를 해결할 방법을 찾고 있었고 검색 기술이 동등하지 않은 경우 사과드립니다.ES6 호출 기능 가져 오기
내 문제 : API를 가져 오는 중이고 모든 데이터가 완전히로드되었는지 알고 싶습니다. 문서를 읽으면, 내가 가져올 수있는 문장을 연결할 수있는 것처럼 보입니다. 그러나, 그들은 마치 모두가 이전에 기다리지 않고 동시에 발사되는 것처럼 보입니다. 여기
내 코드입니다 :
fetch(myUrl, {
method: 'post',
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
credentials: 'include',
body: data
})
.then(fetchStatus)
.then(json)
.then(function(msg){
showSearchResults();
setTimeout(function(){ console.log("Next then should fire after this"); }, 4000);
})
.then(function(){
return console.log("The 2nd is firing!");
});
function fetchStatus(response) {
if (response.status >= 200 && response.status < 300) {
return Promise.resolve(response)
} else {
return Promise.reject(new Error(response.statusText))
}
}
function json(response) {
return response.json()
}
가 비동기 경우에 매우 중요하지만,이 사건으로 인해 내가 이전에 의해 생성되는 콘텐츠와 함께 작동하도록 노력하고 있다는 사실을 동기화 할 필요가 전화, showSearchResults();
도움을 주시면 감사하겠습니다.
당신이 {>는 'MSG =에 대해 잊지 마세요 ES6를 사용하는 경우 ... }'함수 표기법. 그것은 많은 장황함을 줄여 줄 수 있고'var self = this'의 춤을 피할 수 있습니다. – tadman
Promise.all에서'showSearchResults'를 래핑하여 해결할 때까지 기다리십시오. – maioman
여기에 어떤 문제가 있는지 명확하지 않습니다. 당신은 하나의'fetch' 호출을 가지고 있으며, 그 체인 내의 각 핸들러는 이전의 것이 실행 된 후에 만 실행될 것입니다. 정확히 뭐가 문제 야? (또한 : showSearchResults에 어떤 종류의 인수를 제공해서는 안됩니까?) –