프로그래밍/Javascript
JS 프로미스
즐겁게 하하하
2022. 4. 28. 09:34
728x90
프로미스 생성, 실행
//프로미스 생성
const promise1 = function(param){
return new Promise(function(resolve,reject){
if(param){
resolve("바보");
}
else{
reject("아닌데");
}
});
}
//프로미스 실행
promise1(true).then(function(result){
console.log(result);//바보
},function(err){
console.log(err);//아닌데
});
여러 개의 프로미스가 모두 완료되었을 때 실행하는 방법
const param = true;
const promise1 = new Promise(function(resolve,reject){
if(param){
resolve("바보");
}
else{
reject("아닌데");
}
});
const promise2 = new Promise(function(resolve,reject){
if(param){
resolve("바보2");
}
else{
reject("아닌데2");
}
});
Promise.all([promise1,promise2]).then(function(values){
console.log("1,2,3 모두완료",values);
});
function setCustSelected(){
var codeIdArr = [];
$.when(
$(".custCheckBox").each(function(index, item) {
if( $(this).prop("checked") ){ codeIdArr.push($(this).val()); }
})
).then(function(){
if(codeIdArr.length > 0 ){
setSelectCouponCust( codeIdArr ); // out :: 사용하려는 페이지 에서 선언
table_cust2.ajax.reload();
}else{
alert("쿠폰을 발급할 고객사를 선택하세요.");
return false;
}
});
}
$('document').ready(function(){
async function fetchData() {
try {
var result = await validateSubmitSurv();
if(!result.isSubmitted && !result.isExpired) {
await prevSurvQueList();
}else{
showReconnectView(result);
}
}catch(error) {
console.error("Promise 수행 중 ERROR", error);
}
}
})
// 검사 Function
function validateSubmitSurv() {
return new Promise(function(resolve, reject) {
$.ajax({
url: "/surveyView/validateSubmitSurv.do",
data: {testId: testId, testKey: testKey},
dataType: 'json',
method: 'get',
success: function(result) {
if(result.submitCnt > 0) {
resolve({isSubmitted: true, survData: result.survData});
}else{
if(result.survData.sttCd == "END") {
resolve({isSubmitted: false, isExpired: true, survData: result.survData});
}else{
resolve(false);
}
}
},
error: function(XMLHttpRequest,status,error) {
fn_error(XMLHttpRequest);
}
});
});
}
function prevSurvQueList() {
return new Promise(function(resolve, reject) {
$.ajax({
url: "/surveyView/prevSurvQueList.do",
data: {svyId: svyId},
dataType: 'json',
method: 'get',
success: function(result) {
}
});
});
}
728x90