graphql에서 resolvefield를 사용하면 N+1 문제가 생긴다.
이럴 때 dataloader를 이용해 쿼리를 하나로 묶어줄 수 있다.
var enqueuePostPromiseJob =
typeof process === 'object' && typeof process.nextTick === 'function' ?
function (fn) {
if (!resolvedPromise) {
resolvedPromise = Promise.resolve();
}
resolvedPromise.then(() => {
process.nextTick(fn);
});
} :
typeof setImmediate === 'function' ? function (fn) {
setImmediate(fn);
} : function (fn) {
setTimeout(fn);
};
dataloader는 작업을 모아놨다가 process.nextTick이나 setImmediate에서 실행한다.