ID 배열과 호출해야하는 수정 끝점이 있습니다. 그래서 ID의 배열을 foreach하고 각 ID에 해당하는 rest API 호출을 만들고 싶습니다. 끝점을 "넘치게"하고 싶지 않으므로 각 호출 사이에 잠깐 기다려야합니다. 또한 새로운 ID로 끝점을 호출하기 전에 응답을 기다리고 싶습니다.setTimeout을 사용하여 나머지 API 호출을 일시 중지
는 여기에 내가 무엇을 최대 온의 : serviceMock의 setTimeout
나머지 API 호출을 시뮬레이션하는 데 사용되며, main
의 setTimeout
가 호출 사이에 일시 정지하는 데 사용됩니다
// Code goes here
console.clear();
const url = 'some-domain.com/v1/api/users';
const ids = [1, 2, 3, 4, 5, 6, 7];
const serviceMock = (id) => new Promise((resolve, reject) => {
console.log('Got request for id ' + id);
setTimeout(() => {
resolve(`${url}${id} returned ${ Math.floor((Math.random() * 100) + 1)}`);
}, 2000);
});
const main = async() => {
let index = 0;
for (let id of ids) {
index++;
setTimeout(async() => {
const data = await serviceMock(id);
console.log(`Done for user ${id}!`);
console.log(data);
}, 1000 * index);
}
};
main();
. 이제
는, 내가 행동하고 싶은 방법 (콘솔) 다음과 같습니다 http://plnkr.co/edit/sNfk8GIfqbhrpql5hQ16?p=preview
: 여기Got request for id 1
Got request for id 2
Got request for id 3
Done for user 1!
some-domain.com/v1/api/users1 returned 77
Got request for id 4
Done for user 2!
some-domain.com/v1/api/users2 returned 75
Got request for id 5
Done for user 3!
some-domain.com/v1/api/users3 returned 26
Got request for id 6
Done for user 4!
some-domain.com/v1/api/users4 returned 44
Got request for id 7
Done for user 5!
some-domain.com/v1/api/users5 returned 79
Done for user 6!
some-domain.com/v1/api/users6 returned 52
Done for user 7!
some-domain.com/v1/api/users7 returned 34
가 작동 예제 :
Got request for id 1
Done for user 1!
some-domain.com/v1/api/users1 returned 77
Got request for id 2
Done for user 2!
some-domain.com/v1/api/users2 returned 75
Got request for id 3
Done for user 3!
some-domain.com/v1/api/users3 returned 26
Got request for id 4
Done for user 4!
some-domain.com/v1/api/users4 returned 44
Got request for id 5
Done for user 5!
some-domain.com/v1/api/users5 returned 79
Got request for id 6
Done for user 6!
some-domain.com/v1/api/users6 returned 52
Got request for id 7
Done for user 7!
some-domain.com/v1/api/users7 returned 34
이 내가 무엇을 얻을
정확히 내가 여기에 누락 되었습니까?
당신은'setTimeout' 콜백 대기 결코
난 당신이 이 기능을 기다려야 쓰기 좋습니다. 사실 콜백을 기다릴 수는 없지만, 단지'serviceMock'에서 보여준 것과 똑같은 지연을 위해 약속을 만들 수 있습니다. – Bergi
음,이게 뭔가? http://plnkr.co/edit/7n6ysTt0tn9UdlUV7ppp 여전히'setTimeout'에서 이것을해야합니다 :'1000 * index'? – uglycode
그렇습니다. 그렇지만 a) 콜백 내에서가 아니라 지연 후 자체'await'에'serviceMock (id)'를 넣으십시오. b) 지연 약속을 위해 도우미 함수를 만드십시오. c) 곱하기 더 이상 – Bergi