Питання стосовно використання Promise в Node.js
Коли проміс створюється з оператором new, то з подальшим використанням функцій resolve, reject питань не виникає.
let promise = new Promise( (resolve, reject) => { let result = ... if( result === 'ok' ) resolve(result); ... if(err) reject(err); } )
Питання виникають коли доцільно використовувати методи Promise.resolve(), Promise.reject(). З документації зрозуміло, що їх можна використовувати, наприклад, щоб повернути певне значення загорнуте у промісі:
Promise.resolve("Success") .then( value => { console.log(value); // "Success" });
Такий варіант буде корисним, бо він дозволяє у скороченій формі повернути результат у вигляді проміса, якійсь функції, яка очікує саме промісу...
Але чи доречно ці методи використовувати десь всередині колбеку, наприклад так:
promise .then( () => { request.dateRegistered = Date.now(); // Припустимо тут дуже багато подібних простих операцій (без звернення до зовнішніх БД, зовнішніх систем і т.д.) // ... return Promise.resolve(); } ) .then( () => { console.log('this is next code'); })
В такому разі наступний then, буде очікувати поки зарезолвиться попередній then, чи ні? Мої експеременти показують, що спочатку виконується код у першому, а тоді у другому колбеках для then. Але припускаю, що може на практиці таки колись виконається спочатку другий, а потім лише перший код.
Хтось обкатував такий код в продакті? Як він себе поводить?
104 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів