Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- pm2 시작
- DatePicker
- html #select #option #multiple
- setInterval 중지
- 데이터테이블 데이터 넣기
- Replication
- 서버동기화
- pm2 확인
- pm2 상태 확인
- pm2 설치
- c# datagridview 데이터 넣기
- AntDesign
- setInterval 정지
- mySQL_Replication
- map이 undefined가 뜰 때
- transfer
- listener 1883
- DataGridView 직접 입력
- setInterval 외부 정지
- allow_anonymouse
- datagridview 직접입력
- mosquitto
- mosquitto.conf
- 맥 어드레스
- 공인IP
- timepicker
- invalid data
- setInterval clear
- pm2
- 1883
Archives
- Today
- Total
개발 노트
JavaScript - Promise.all () 본문
Promise.all() 메서드는 순회 가능한 객체에 주어진 모든 프로미스가 이행한 후, 혹은 프로미스가 주어지지 않았을 때 이행하는 Promise를 반환합니다.
주어진 프로미스 중 하나가 거부하는 경우, 첫 번째로 거절한 프로미스의 이유를 사용해 자신도 거부합니다.
└ 한가지가 거절하면 all내부의 것들이 다 안돌아도 탈출한다.
매개변수로는 iterable한 (순회가능한) 객체
Promise.all(iterable);
반환값
- 매개변수로 주어진 순회 가능한 객체가 비어 있으면 이미 이행한 Promise.
- 객체에 프로미스가 없으면, 비동기적으로 이행하는 Promise.
- 그렇지 않은 경우, 대기 중인 Promise. 결과로 반환하는 프로미스는 인자의 모든 프로미스가 이행하거나 어떤 프로미스가 거부할 때 (호출 스택이 비는 즉시) 비동기적으로 이행/거부합니다.
반환하는 프로미스의 이행 값은 매개변수로 주어진 프로미스의 순서와 일치하며, 완료 순서에 영향을 받지 않습니다.
이 메서드는 여러 프로미스의 결과를 집계할 때 유용하게 사용할 수 있습니다.
일반적으로 다음 코드를 계속 실행하기 전에 서로 연관된 비동기 작업 여러 개가 모두 이행되어야 하는 경우에 사용됩니다.
입력 값으로 들어온 프로미스 중 하나라도 거부 당하면 Promise.all()은 즉시 거부합니다. 이에 비해, Promise.allSettled()가 반환하는 프로미스는 이행/거부 여부에 관계없이 주어진 프로미스가 모두 완료될 때까지 기다립니다. 결과적으로, 주어진 이터러블의 모든 프로미스와 함수의 결과 값을 최종적으로 반환합니다.
const getValuesString = async (columnNames, columnTypes, data) => {
let valuesString;
try {
valuesString = await Promise.all(
columnNames.map(async (name) => {
let value = data[0][0][name];
console.log('value', name + ':' + value);
if (name === 'RegDate' || name === 'regDate') {
value = 'now()';
return value;
}
if (name === 'issueDate' && value === null) {
value = 'now()';
return value;
}
if (columnTypes.includes(name)) {
value = Number(value);
return value;
}
if (value === null) {
value = ' ';
return value;
}
if (typeof value === 'string') {
return `'${value}'`;
} else if (value instanceof Date) {
return `'${value.toISOString().slice(0, 19).replace('T', ' ')}'`;
} else {
return value;
}
})
);
} catch (error) {
console.log('error', error);
}
return valuesString;
};
객체가 아니여도 결과값엔 포함된다.
위의 것과 같이 사용하였는데 위의 구문이 포함된 함수를 호출시 값을 불러올 때에 콘솔을 찍어보면 promise :<panding>
이런식으로 나온다.
약속 객체?라고 했던거 같은데 사용한 함수 앞에 await을 써주거나 다른 경우에는 .then, .catch를 사용해주어야 한다.
let valuesString = await getValuesString(columnNames, columnTypes, data);
함수사용시 예제 - 이런 식으로 await를 사용해야한다.
let AuthUser = function(data) {
return google.login(data.username, data.password).then(token => { return token } )
}
let userToken = AuthUser(data)
console.log(userToken) // Promise { <pending> }
userToken.then(function(result) {
console.log(result) // "Some User token"
})
.then 예제
'JavaScript' 카테고리의 다른 글
특정 element 찾기 : closest (0) | 2023.06.14 |
---|---|
Moment.js (0) | 2023.06.02 |
for문같은 반복문또는 즉시실행되는 것에 async를 달고 싶을 때 (0) | 2023.04.19 |
차트 xfield 데이터 타입 (0) | 2023.04.10 |
즉시실행함수로 for문을 비동기 -> 동기실행으로 바꾸는법 (0) | 2023.04.07 |