Как я могу отложить обещание через определенное время? Я знаю, что Q имеет тайм-аут обещания, но я использую собственный NodeJS promises, и у них нет функции .timeout.
Я пропустил один или его обернутый иначе?
В качестве альтернативы, реализована ли реализация ниже, чтобы не всасывать память, фактически работая как ожидалось?
Также я могу сделать его каким-то образом завернутым в глобальном масштабе, чтобы я мог использовать его для каждого обещания, которое я создаю, не повторяя код setTimeout и clearTimeout?
function run() {
logger.info('DoNothingController working on process id {0}...'.format(process.pid));
myPromise(4000)
.then(function() {
logger.info('Successful!');
})
.catch(function(error) {
logger.error('Failed! ' + error);
});
}
function myPromise(ms) {
return new Promise(function(resolve, reject) {
var hasValueReturned;
var promiseTimeout = setTimeout(function() {
if (!hasValueReturned) {
reject('Promise timed out after ' + ms + ' ms');
}
}, ms);
// Do something, for example for testing purposes
setTimeout(function() {
resolve();
clearTimeout(promiseTimeout);
}, ms - 2000);
});
}
Спасибо!