Bluebird appears to have timeouts: https://github.com/petkaantonov/bluebird/blob/master/API.md#timeoutint-ms--string-message---promise
~Ryan On Thu, 25 Jun 2015 at 14:06 Gustavo Machado <machad...@gmail.com> wrote: > Hi Alen, > > Check out the "race" method of promises, might help simplify this a lot. > > > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/race > > Cheers, > Gus > > On Thu, Jun 25, 2015 at 3:06 PM, <a...@vidao.com> wrote: > >> Hello, >> >> Being relatively new to promises, a few months into using them (the >> native implementation on nodejs) I found myself adding timeout rejections >> repeatedly. For me it is a very common use case. >> >> I took a quick look and didn't find Promises with built in timeouts. The >> code below is my wrapper to handle that, it seems to work fine & passes my >> tests. The 2 questions I have are (1) is there something that's commonly >> used for this that I missed in my search and (2) if not - does the wrapper >> seem alright or is there a potential problem? >> >> Thank you! >> Alen >> >> var DEFAULT_TIMEOUT = 5000; >> >> var TimedPromise = function(timeoutAfter) { >> >> var _self = this; >> >> var _rejectFunc; >> var _resolveFunc; >> >> var _timeoutMs = timeoutAfter ? timeoutAfter : DEFAULT_TIMEOUT; >> >> var _promise = new Promise(function(resolveFunc, rejectFunc) { >> _resolveFunc = resolveFunc.bind(this); >> _rejectFunc = rejectFunc.bind(this); >> }); >> >> var _timeout = setTimeout(function() { >> >> if (_rejectFunc) { >> _rejectFunc(Error('timeout')); >> } >> else { >> >> _promise.then = function() { >> return Promise.reject(new Error('timeout')); >> }; >> } >> }, >> _timeoutMs >> ); >> >> _self.resolve = function(arg) { >> >> if (_timeout) { >> clearTimeout(_timeout); >> } >> >> _resolveFunc(arg); >> }; >> >> _self.reject = function(arg) { >> >> if (_timeout) { >> clearTimeout(_timeout); >> } >> >> _rejectFunc(arg); >> }; >> >> _self.promise = function() { >> return _promise; >> }; >> >> }; >> >> exports = module.exports = TimedPromise; >> >> >> >> -- >> Job board: http://jobs.nodejs.org/ >> New group rules: >> https://gist.github.com/othiym23/9886289#file-moderation-policy-md >> Old group rules: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to nodejs+unsubscr...@googlegroups.com. >> To post to this group, send email to nodejs@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/nodejs/4c1b478c-b2ff-453d-b35d-d5a4de967af2%40googlegroups.com >> <https://groups.google.com/d/msgid/nodejs/4c1b478c-b2ff-453d-b35d-d5a4de967af2%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > Job board: http://jobs.nodejs.org/ > New group rules: > https://gist.github.com/othiym23/9886289#file-moderation-policy-md > Old group rules: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nodejs+unsubscr...@googlegroups.com. > To post to this group, send email to nodejs@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/CAJkwh4Kg%3D3HayO_Dkh1SHSpa2SncY7JN4QzuKMacJBHPBXgE5Q%40mail.gmail.com > <https://groups.google.com/d/msgid/nodejs/CAJkwh4Kg%3D3HayO_Dkh1SHSpa2SncY7JN4QzuKMacJBHPBXgE5Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. To post to this group, send email to nodejs@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CAGjmZGyF7qE6A4r9u0Oz9W7%2BoOLcm%3DxYdasG7Gn8FDRtUxjXsQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.