-
[node] How to double co-routine in promise & loopBackend/NodeJS 2019. 11. 26. 17:06
비동기 작업의 동기화, 코루틴
각 회원들의 프로필과 친구리스트를
회원별로 새로운 객체에 담고 싶을때
co-routine과 promise를 활용하여
DB 작업은 비동기로 처리하고
베이스 루틴은 동기적으로 처리하여
만들어진 객체를 반환한다.
이 작업은 코루틴 안에서 작업을 비동기적으로 하면서, 모든 작업이 완료되었을 때 반환한다.
When all jobs are done, this funtion is return and the main tasks are processed asyncronously.
const cofunc = bPromise.coroutine(function* () { try { ... const members = yield getMembers(); // get DB // [{"id":"", "email":""}, ...] const re = yield new bPromise((resolve: any, reject: any) => { const list = []; members.forEach((member: any, idx: number) => { const temp = []; co(function*() { const profile = yield getProfile(member); // get DB const friends = yield getFriends(member); // get DB list.push({"member":member, "profile":profile, "friends":friends}); return index ; }).then((result: any) => { if(index >= members.length-1) return resolve(); }); }); }); // [{"member":{"id":"", "email":""}, "profile":{}, "friends":[...]}, ...] return re; } catch (err) { ... } }); cofunc();
Co-routine in Loop in Promise in Co-routine
'Backend > NodeJS' 카테고리의 다른 글
How to use Winston to log node application with telegram. (0) 2019.12.19 [node] express compression 메모리 최적화 (memory optimization) (0) 2019.12.18 ReferenceError: regeneratorRuntime is not defined (0) 2019.12.09 [node] How to send remind-push to customers (0) 2019.11.27 Node.js 성능 향상 팁optimization Tip with clinic (0) 2019.08.05