【kintone】async/await 로 순서대로 데이터를 취득한다
이번에는 async/await 로 다른 앱에서 레코드의 데이터를 가져온다는 처리(비동기 처리)를 차례로 실행하는 것에 대해 생각하고 싶습니다.
앱 준비
차례로 의미가 있는 것···라고 하면, 밀짚모 장자 정도 밖에 떠오른다.
그래서 와라시베 장자 앱을 만듭니다.
async/await를 여러 번 사용하고 싶으므로,
두 번 교환한 후 아이템을 얻는 앱을 만들고 싶습니다.
와라시베 마스터 앱
밀짚 → 귤 → 반물 → 말 → 집
라고 하는 교환을 실시하기 때문에 아래와 같은 어플리로 합니다.
「교환전」은 중복 금지로 해 둡시다.
필드 종류
필드 코드
비고
문자열(1행)
교환 전
중복 금지
문자열(1행)
교환 전
와라시베 2회 교환 앱
두 번 교환 후 물건을 표시하는 앱을 만듭니다.
조회로 방금 전의 밀짚 마스터의 「교환 전」을 취득합니다.
저장 버튼 클릭 후 2회 교환 후의 아이템이 저장되도록 하고 싶습니다.
필드 종류
필드 코드
비고
조회
교환 전
와라시베 앱의 「교환 전」을 취득
문자열(1행)
교환 2회
자바스크립트 쓰기
밀짚 → 귤 → 반물 → 말 → 집
2회 교환 후 아이템을 얻으려면
밀짚 → 귤 → 반물 → 말 → 집
2회 교환 후 아이템을 얻으려면
의 순서로 프로그램을 실행하면 좋을 것 같습니다.
그래서 프로그램은 다음과 같습니다.
※와라시베 2회 교환 앱으로 JavaScript를 업합니다.
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], async event => {
//1回目の交換:ルックアップで取得したアイテムで検索(みかん → 反物)
const resp1 = await kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+event.record.交換前.value+'"'});
//2回目の交換:1回目の交換後アイテムで検索(反物 → 馬)
const resp2 = await kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+resp1.records[0].交換後.value+'"'});
//2回目の交換後のアイテムを表示(馬 を表示)
event.record.交換2回.value =resp2.records[0].交換後.value;
return event;
});
완성
귤을 선택하면 말이 표시됩니다.
참고 : 짚 → 귤 → 반물 → 말 → 집
kintone.Promise.all이라면 ...
kintone.Promise.all을 사용하여 다시 작성하면 이런 느낌이 든다고 생각합니다.
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], event => {
//1回目の交換:ルックアップで取得したアイテムで検索(みかん → 反物)
const resp1 = kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+event.record.交換前.value+'"'});
//2回目の交換:1回目の交換後アイテムで検索(反物 → 馬)
const resp2 = kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+resp1.records[0].交換後.value+'"'});
return kintone.Promise.all([resp1, resp2]).then(resps => {
console.log(resps);
//2回目の交換後のアイテムを表示(馬 を表示)
event.record.交換2回.value =resps[1].records[0].交換後.value;
return event;
});
});
kintone.Promise.all은 복수의 비동기 처리를 동시 병렬로 실행시켜, 전부 처리가 끝나면 다음에 진행한다고 하는 움직임을 했습니다. 이 예제에서 kintone.Promise.all을 사용하면 const resp2 = ~~ resp1.records[0].交換後.value ~~~
에서 다음과 같은 오류가 발생합니다.
resp1에 레코드 데이터를 가져오기 전에 resp1.records[0]의 내용에 액세스하려고 하면 오류가 발생합니다. resp1을 취득한 후에 resp2를 취득하는 순서를 지켜야 합니다. 이러한 순서가 중요한 경우는 kintone.Promise.all 가 아니라 async/await 를 사용합시다.
요약
async/await를 사용하여 순서대로 데이터를 검색하는 프로그램을 소개했습니다.
순서에 관계없이 동시 병렬로 실행해도 좋을 때는 kintone.Promise.all 를 사용합시다.
※Promise.all 과 async/await 의 구분 포인트는 전회의 ↓이쪽을 봐 주세요 ^0^
【kintone】 kintone.Promise.all에서 다른 앱에서 데이터를 가져 와서 계산합시다.
약간의 「움직였다!」로부터 커스터마이즈의 즐거움을 느낄 수 있으면 기쁩니다.
Reference
이 문제에 관하여(【kintone】async/await 로 순서대로 데이터를 취득한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/juri_don/items/50c14866ad1f1b564d95
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
kintone.Promise.all을 사용하여 다시 작성하면 이런 느낌이 든다고 생각합니다.
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], event => {
//1回目の交換:ルックアップで取得したアイテムで検索(みかん → 反物)
const resp1 = kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+event.record.交換前.value+'"'});
//2回目の交換:1回目の交換後アイテムで検索(反物 → 馬)
const resp2 = kintone.api('/k/v1/records', 'GET', {'app': わらしべマスターアプリID,'query':'交換前="'+resp1.records[0].交換後.value+'"'});
return kintone.Promise.all([resp1, resp2]).then(resps => {
console.log(resps);
//2回目の交換後のアイテムを表示(馬 を表示)
event.record.交換2回.value =resps[1].records[0].交換後.value;
return event;
});
});
kintone.Promise.all은 복수의 비동기 처리를 동시 병렬로 실행시켜, 전부 처리가 끝나면 다음에 진행한다고 하는 움직임을 했습니다. 이 예제에서 kintone.Promise.all을 사용하면
const resp2 = ~~ resp1.records[0].交換後.value ~~~
에서 다음과 같은 오류가 발생합니다.resp1에 레코드 데이터를 가져오기 전에 resp1.records[0]의 내용에 액세스하려고 하면 오류가 발생합니다. resp1을 취득한 후에 resp2를 취득하는 순서를 지켜야 합니다. 이러한 순서가 중요한 경우는 kintone.Promise.all 가 아니라 async/await 를 사용합시다.
요약
async/await를 사용하여 순서대로 데이터를 검색하는 프로그램을 소개했습니다.
순서에 관계없이 동시 병렬로 실행해도 좋을 때는 kintone.Promise.all 를 사용합시다.
※Promise.all 과 async/await 의 구분 포인트는 전회의 ↓이쪽을 봐 주세요 ^0^
【kintone】 kintone.Promise.all에서 다른 앱에서 데이터를 가져 와서 계산합시다.
약간의 「움직였다!」로부터 커스터마이즈의 즐거움을 느낄 수 있으면 기쁩니다.
Reference
이 문제에 관하여(【kintone】async/await 로 순서대로 데이터를 취득한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/juri_don/items/50c14866ad1f1b564d95
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【kintone】async/await 로 순서대로 데이터를 취득한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/juri_don/items/50c14866ad1f1b564d95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)