Parse.com을 즐겨 사용하고 있습니다.
Cloud Code를 이용해서 Background Job을 구성했는데요.
Parse가 30 request / sec 가 제한인데 Background Job이 돌때 이게 아슬아슬 하더군요.
그래서 delay를 줄 방법을 찾아봤습니다.
-
settimeout은 cloud code에서 지원하지 않아요. 탈락!
-
NodeJS의 process.nextTick 이게 먹더군요. 이걸 보니 parse.com은 node로 구성된게 100% 군요.
검색해보니 이미 선구자가 있군요.
http://david.logdown.com/posts/255107/parse-cloud-code-does-not-support-settimeout
이건 scope가 여러군데서 쓰기엔 적합하지 않아서, 간단하게 이렇게 구성했습니다.// delay using promise (setTimeout didn’t support)
var delay = function(delayTime) {
var delayUntil;
var delayPromise;var _delay = function () { if (Date.now() >= delayUntil) { delayPromise.resolve(); return; } else { process.nextTick(_delay); } } delayUntil = Date.now() + delayTime; delayPromise = new Parse.Promise(); _delay(); return delayPromise;
};
유용합니다 : )
용례는 이렇게요.
delay(100).then( ... );
Parse.com 완전 좋아요. 꼭 쓰세요~