Для этого вы можете использовать API мониторинга bluebird.
Promise.config({
monitoring: true
});
Слушайте promiseChained
событие для обнаружения then
прикован, а затем слушать promiseFulfilled
события, чтобы знать, когда обратный вызов выполняется:
var candidates = new WeakSet(); // a set for our promises that were chained
process.on('promiseChained', (_, {promise, child}) => {
candidates.add(child);
});
process.on('promiseFullfilled', (_, {promise}) => {
if(candidates.has(promise)) {
callYourFunctionHere(); // HERE
}
});
Это будет выполняться на каждыйthen
обработчика выполняется , если вы хотите выполнить его для конкретных, то перед добавлением к кандидатам - проверьте, является ли promise
(аргумент) обещанием, прикованным или в наборе (так что это часть цепочки).
Для 'new Promise (...). Then (...). Then (...). Then (...);', вы ожидаете, что ваш метод будет вызван 3 раза? – Martial
Нет. Нет встроенного способа сделать это, и даже попытаться взломать его, исправив 'Promise.prototype.then()' было бы довольно сложно. Пожалуйста, опишите реальную проблему, которую вы пытаетесь решить, поэтому мы можем предложить поддерживаемый способ решения любой вашей реальной проблемы. – jfriend00
Вы пытаетесь вызвать свой метод после вызова '.then()'? Или после того, как вызывается каждый 'resolveHandler' или' rejectHandler', который был передан в '.then()'? Это две разные вещи, так как 'resolveHandler' или' rejectHandler' вызываются долго после вызова '.then()'. – jfriend00